آموزش ارسال ایمیل در MVC با استفاده از کانفیگ
0 0

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ


آموزش ارسال ایمیل در MVC با استفاده از کانفیگ

در این پست میخواهیم نحوه ارسال ایمیل در Asp.net MVC از طریق کانفیگ را آموزش دهیم.

در MVC نحوه ارسال ایمیل به طریق های مختلفی انجام میشود. یکی از این روش ها ارسال به صورت تنظیم از طریق کانفیگ است که با آدرس دهی در آن میتوان پیام هایی را از طریق ایمیل ارسال کرد. امروز نحوه انجام این کار را آموزش میدهیم.

ابتدا یک پروژه از نوع MVC ایجاد میکنیم.

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ

 

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ

 

ابتدا فایل کانفیگ را باز کرده  و کد زیر را به ان اضافه میکنیم.


<appSettings>
    <add key="webpages:Version" value="2.0.0.0" />
    <add key="webpages:Enabled" value="false" />
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
  
    <add key="FromAddress" value="xxxxx@xxxxxxx.com"/>
    <add key="ToAddress" value="xxxxx@xxxxxxx.com" />

    <add key="UserID" value="xxxxx@xxxxxxx.com"/>
    <add key="Password" value="xxxxxxx"/>
    <add key="ReplyTo" value="xxxxx@xxxxxxx.com"/>
    <add key="SMTPPort" value="587"/>
    <add key="EnableSSL" value="Yes"/>
  
</appSettings>

نکته :

 FromAddress و UserID  باید آدرس خودتان را بنویسید.

ToAddress  ادرس مقصد.

 Password برای رمز عبور.

 ReplyTo برای آدرس ها بیشتر .

وارد پوشه کنترلر میشویم و داخل فایل HomeController کدهای زیر را اضافه میکنیم.

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ


public ActionResult Email()
        {
            return View();
        }


 public ActionResult SendMail(string Subject, string Body)
        {

            
                EMail oMail = new EMail();
                oMail.SendMail("Email", "xxxxx@xxxxxxx.com", new String[] { Subject, Body });
          
            return Content("Success");
        }
    }

سپس داخل پوشه Views یک صفحه با نام Email ایجاد میکنیم و کد زیر را داخل آن می نویسیم.


@using (Html.BeginForm("SendMail", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <table>
        <tr>
            <td>موضوع :</td>
            <td>
                <input  type="text" name="Subject" id="Subject"/>
            </td>
        </tr>
        <tr>
            <td>متن پیام :</td>
            <td>
                <textarea name="Body" id="Body" cols="5" rows="3"></textarea>
            </td>
        </tr>
        <tr>
            <td></td>
            <td>
                <input  type="submit" value="ارسال" name="send" id="Send"/>
            </td>
        </tr>
    </table>
}

در ادامه یک کلاس داخل پوشه Models ایجاد میکنیم با نام EMail و ابتدا فضای نام زیر را اضافه میکنیم.


using System.Net.Mail;

سپس داخل کلاس Email توابع  کانفیگ را فراخوانی میکنیم.


private string FromAddress;
private string strToAddress;
private string strSmtpClient;
private string UserID;
private string Password;
private string ReplyTo;
private string SMTPPort;
private Boolean bEnableSSL;

سپس در ادامه تابع داخلی زیر را اضافه می کنیم.


private void InitMail()
        {
            FromAddress = System.Configuration.ConfigurationManager.AppSettings.Get("FromAddress");
            strToAddress = System.Configuration.ConfigurationManager.AppSettings.Get("ToAddress");
            //strSmtpClient = System.Configuration.ConfigurationManager.AppSettings.Get("SmtpClient");
            strSmtpClient = "smtp.gmail.com";
            UserID = System.Configuration.ConfigurationManager.AppSettings.Get("UserID");
            Password = System.Configuration.ConfigurationManager.AppSettings.Get("Password");
            ReplyTo = System.Configuration.ConfigurationManager.AppSettings.Get("ReplyTo");
            SMTPPort = System.Configuration.ConfigurationManager.AppSettings.Get("SMTPPort");
            if (System.Configuration.ConfigurationManager.AppSettings.Get("EnableSSL").ToUpper() == "YES")
            {
                bEnableSSL = true;
            }
            else
            {
                bEnableSSL = false;
            }
        }

توجه داشته باشید که مقادیر مورد نیاز برای آدرس ایمیل و پسورد و .... را از داخل کانفیگ دریافت میکنه.

سپس برای اینکه با فایل کانفیگ کار میکنیم نیاز داریم تا از فرمت Xml استفاده کنیم. برای این کار کد زیر را می نویسیم .


public void SendMail(string messageId, string toAddress, string[] param)
        {
            XmlDocument xdoc = new XmlDocument();
            string mailFormatxml = HttpContext.Current.Server.MapPath("\\") + "Mailformat.xml";
            string subject = "";
            string body = "";
            XmlNode mailNode = default(XmlNode);
            int n = 0;

            if ((System.IO.File.Exists(mailFormatxml)))
            {
                xdoc.Load(mailFormatxml);
                mailNode = xdoc.SelectSingleNode("MailFormats/MailFormat[@Id='" + messageId + "']");
                subject = mailNode.SelectSingleNode("Subject").InnerText;
                body = mailNode.SelectSingleNode("Body").InnerText;
                if ((param == null))
                {
                    throw new Exception("فرمت ایمیل ناشناس");
                }
                else
                {
                    for (n = 0; n <= param.Length - 1; n++)
                    {
                        body = body.Replace(n.ToString() + "?", param[n]);
                        subject = subject.Replace(n.ToString() + "?", param[n]);
                    }
                }

                InitMail();
             
                dynamic MailMessage = new MailMessage();
                MailMessage.From = new MailAddress(FromAddress);
                MailMessage.To.Add(strToAddress);
                MailMessage.Subject = subject;
                MailMessage.IsBodyHtml = true;
                MailMessage.Body = body;
             
                MailMessage.ReplyTo = new MailAddress(FromAddress);

                SmtpClient SmtpClient = new SmtpClient();
                SmtpClient.Host = strSmtpClient;
                SmtpClient.EnableSsl = bEnableSSL;
                SmtpClient.Port = Convert.ToInt32(SMTPPort);
                SmtpClient.Credentials = new System.Net.NetworkCredential(UserID, Password);
                try
                {
                    SmtpClient.Send(MailMessage);
                }
                catch (SmtpFailedRecipientsException ex)
                {
                    for (int i = 0; i <= ex.InnerExceptions.Length; i++)
                    {
                        SmtpStatusCode status = ex.InnerExceptions[i].StatusCode;
                        if ((status == SmtpStatusCode.MailboxBusy) | (status == SmtpStatusCode.MailboxUnavailable))
                        {
                            System.Threading.Thread.Sleep(5000);
                            SmtpClient.Send(MailMessage);
                        }
                    }
                }
            }
        }

 

نتیجه حاصل شده :

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ

 

آموزش ارسال ایمیل در MVC با استفاده از کانفیگ

دانلود

نویسنده علی بهارلویی
گروه مطلب MVC
نوع مطلب سورس کد و آموزش
تاریخ انتشار ۸ مهر ۱۳۹۴
منبع ایران گنج
تعداد نظرات ۰
قیمت کاربران عضو سایت
توضیح توجه:
  • زمانی که روی لینک دانلود کلیک می کنید لینک دانلود به مدت 24 ساعت معتبر خواهد بود
  • لینک های دانلود دوره های آموزشی تا پایان دوره قابل دانلود می باشد.
  • برای خارج کردن فایل ها از حالت فشرده از ورژن جدید نرم افزار winrar استفاده کنید.
  • برای خارج کردن فایل ها از حالت فشرده لینک های دانلودی که چندین قسمت می باشند فقط قسمت اول را از حالت فشرده خارج کنید.
  • لطفا توضیحات نوشته شده برای مطالب را با دقت بخوانید.
  • برای نمایش فیلم ها می توانید از نرم افزار هایی مانند Km Player , VLC Player یا Media Player Classic استفاده کنید.

نظر / سوال

Captcha