/// <summary> /// متد ارسال با شش پارامتر /// کاملترین مدل ارسال /// </summary> /// <param name="sender">ارسال کننده</param> /// <param name="recipients">دريافت کنندگان</param> /// <param name="subject">موضوع</param> /// <param name="body">بدنه</param> /// <param name="priority">اهميت</param> /// <param name="deliveryNotification">رسيد ارسال</param> public static void Send ( System.Net.Mail.MailAddress sender, System.Net.Mail.MailAddressCollection recipients, string subject, string body, System.Net.Mail.MailPriority priority, System.Net.Mail.AttachmentCollection attachments, System.Net.Mail.DeliveryNotificationOptions deliveryNotification ) { //ایجاد سه شی از میل آدرس - اس ام تی پی و میل مسیج System.Net.Mail.MailAddress oSender = null;; System.Net.Mail.SmtpClient oSmtpClient = null; System.Net.Mail.MailMessage oMailMessage = null; try { // ################################################# // ### Mail Message Configuration ################## // ################################################# // قدم اول نیو کردن شی میل مسیج oMailMessage = new System.Net.Mail.MailMessage(); //اگر پارامتر ورودی سندر نال نبود if (sender != null) { //پارامتر دوم برابر با شی ایجاد شده از میل آدرس میشود oSender = sender; } //در غیر اینصورت else { //ایجاد دو رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو string strAddress = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("NoReplyAddress"); string strDisplayName = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("NoReplyDisplayName"); //اگر رشته دیسپلی نیم نال یا امپتی بود if (string.IsNullOrEmpty(strDisplayName)) { //شی میل آدرس را با دو رشته اس تی آر آدرس نیو میکنیم oSender = new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8); } //در غیر اینصورت else { //شی میل آدرس را با یک رشته اس تی آرآدرس و یک رشته دیسپلی نیم نیو میکنیم oSender = new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8); } } //قسمت های فرام - سندر - و ریپلای تو را برابر با شی میل آدرس او سندر قرار میدهیم //وقتی از یک آدرس در این سه پراپرتی و دو جای دیگر در وب کانفیگ استفاده میکنیم احتمال در اسپم نرفتن بیشتر است oMailMessage.From = oSender; oMailMessage.Sender = oSender; oMailMessage.ReplyTo = oSender; //پراپرتی های ذیل از جنس کالکشن هستند //جهت اطمینان ابتدا آنها را کلیر میکنیم oMailMessage.To.Clear(); oMailMessage.CC.Clear(); oMailMessage.Bcc.Clear(); oMailMessage.Attachments.Clear(); //اگر پارامتر ورودی از میل آدرس نال بود if (recipients == null) { //شی ساخته شده از میل آدرس را برابر نال قرار میدهیم System.Net.Mail.MailAddress oMailAddress = null; //ایجاد دو رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو string strAddress = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("SupportAddress"); string strDisplayName = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("SupportDisplayName"); //اگر رشته دیسپلی نیم نال یا امپتی بود if (string.IsNullOrEmpty(strDisplayName)) { oMailAddress = new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8); } //در غیر اینصورت else { //شی میل آدرس را با یک رشته اس تی آرآدرس و یک رشته دیسپلی نیم نیو میکنیم oMailAddress = new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8); } //پراپرتی تو شی میل مسیج را برابر با شی میل آدرس قرار میدهیم oMailMessage.To.Add(oMailAddress); } else { //اگر پارامتر ورودی میل آدرس نال نبود // Note: Wrong Usage! // oMailMessage.To = recipients; //به ازای تمامی آدرس های موجود در پارامتر ورودی با استفاده از پراپرتی تو میل به مسیج اد میکنیم foreach (System.Net.Mail.MailAddress oMailAddress in recipients) { oMailMessage.To.Add(oMailAddress); } } //ایجاد یک رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو string strBccAddresses = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("BccAddresses"); //اگر استرینگ بی سی سی نال بود if (string.IsNullOrEmpty(strBccAddresses)) { //پراپرتی بی سی سی را به شی میل مسیج اد میکنیم oMailMessage.Bcc.Add("*****@*****.**"); } //در غیراینصورت else { //استرینگ بی سی سی را به میل مسیج اد میکنیم oMailMessage.Bcc.Add(strBccAddresses); } //بدنه رایانامه را مشخص میکنیم oMailMessage.Body = body; //ایجاد یک رشته از نیم اسپیس وب اپلیکیشن و کلاس اپلیکیشن ادیت و متد گت ولیو string strEmailSubjectPrefix = MVC121.Helpers.Utilities.ApplicationEdit.GetValue("EmailSubjectPrefix"); //اگر رشته بالا نال بود if (string.IsNullOrEmpty(strEmailSubjectPrefix)) { //عنوان ورودی را به میل مسیج میدهیم به عنوان سابجکت oMailMessage.Subject = subject; } else { //در غیر اینصورت ابتدا پرفیکس و بعد عنوان را میدهیم oMailMessage.Subject = strEmailSubjectPrefix + " " + subject; } //فعال شدن کد های اچ تی ام ال در متن oMailMessage.IsBodyHtml = true; //اولویت ارسال را با پارامتر ورودی مشخص میکنیم oMailMessage.Priority = priority; //بدنه را انکدینگ میکنیم oMailMessage.BodyEncoding = System.Text.Encoding.UTF8; //عنوان را انکدینگ میکنیم oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8; //نحوه مطلع شدن سرور رایانامه از ارسال رایانامه را با پارامتر ورودی مشخص میکنیم oMailMessage.DeliveryNotificationOptions = deliveryNotification; //اگر رایانامه پیوستی داشت if (attachments != null) { // Note: Wrong Usage! // oMailMessage.Attachments = attachments; //پیوست ها را به این شکل به میل مسیج اد میکنیم foreach (System.Net.Mail.Attachment oAttachment in attachments) { oMailMessage.Attachments.Add(oAttachment); } } //هدر رایانامه را مشخص میکنیم oMailMessage.Headers.Add("TOLOOCO_Mailer_Version", "1.2.1"); oMailMessage.Headers.Add("TOLOOCO_Mailer_Date", "2015/12/12"); oMailMessage.Headers.Add("TOLOOCO_Mailer_Author", "Amir Chabok"); oMailMessage.Headers.Add("TOLOOCO_Mailer_Company", "www.TOLOOCO.com"); // ################################################### // ### /Mail Message Configuration ################## // ################################################### // ################################################### // ### SMTP Message Configuration ################### // ################################################### //ایجاد یک شی از اس ام تی پی oSmtpClient = new System.Net.Mail.SmtpClient(); //کلا تو این گت ولیو ها دیفالت ولیو آخرین مقدار هست //بررسی امضا الکترونیکی رایانامه و مقدار دهی آن توسط متد گت ولیو if (MVC121.Helpers.Utilities.ApplicationEdit.GetValue("SmtpClientEnableSsl", "0") == "1") { oSmtpClient.EnableSsl = true; } else { oSmtpClient.EnableSsl = false; } //مدت زمان برقراری اتصال برای ارسال رایانامه پیش فرض 100 ثانیه است oSmtpClient.Timeout = System.Convert.ToInt32(MVC121.Helpers.Utilities.ApplicationEdit.GetValue("SmtpClientTimeout", "100000")); // ################################################### // ### /SMTP Message Configuration ################### // ################################################### //ارسال نهایی رایانامه oSmtpClient.Send(oMailMessage); } //درصورت بروز خطا آنرا لاگ میکنیم catch (System.Exception ex) { System.Collections.Hashtable oHashtable = new System.Collections.Hashtable(); if (oSender != null) { oHashtable.Add("Address", oSender.Address); oHashtable.Add("DisplayName", oSender.DisplayName); } oHashtable.Add("Subject", subject); oHashtable.Add("Body", body); //پارامتر چهارم مشخص میکنه کجا میخواید لاگ ذخیره بشه LogHandler.Report(typeof(MailMessage), oHashtable, ex, LogHandler.LogTypes.LogToFile); string strErrorMessage = System.Web.HttpContext.GetGlobalResourceObject("Library", "ErrorOnSendingEmail").ToString(); } //شی میل مسیج و اس ام تی پی را خاتمه میدهیم finally { if (oMailMessage != null) { oMailMessage.Dispose(); oMailMessage = null; } if (oSmtpClient != null) { oSmtpClient = null; } } }
public static void Send ( System.Net.Mail.MailAddress sender, System.Net.Mail.MailAddressCollection recipients, string subject, string body, System.Net.Mail.MailPriority priority, System.Net.Mail.AttachmentCollection attachments, System.Net.Mail.DeliveryNotificationOptions deliveryNotification ) { System.Net.Mail.MailAddress oSender = null;; System.Net.Mail.SmtpClient oSmtpClient = null; System.Net.Mail.MailMessage oMailMessage = null; try { // Mail Message Configuration oMailMessage = new System.Net.Mail.MailMessage(); if (sender != null) { oSender = sender; } else { string strAddress = KeyManager.GetValue("NoReplyAddress"); string strDisplayName = KeyManager.GetValue("NoReplyDisplayName"); if (string.IsNullOrEmpty(strDisplayName)) { oSender = new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8); } else { oSender = new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8); } } oMailMessage.From = oSender; oMailMessage.Sender = oSender; oMailMessage.ReplyTo = oSender; oMailMessage.To.Clear(); oMailMessage.CC.Clear(); oMailMessage.Bcc.Clear(); oMailMessage.Attachments.Clear(); if (recipients == null) { System.Net.Mail.MailAddress oMailAddress = null; string strAddress = KeyManager.GetValue("SupportAddress"); string strDisplayName = KeyManager.GetValue("SupportDisplayName"); if (string.IsNullOrEmpty(strDisplayName)) { oMailAddress = new System.Net.Mail.MailAddress(strAddress, strAddress, System.Text.Encoding.UTF8); } else { oMailAddress = new System.Net.Mail.MailAddress(strAddress, strDisplayName, System.Text.Encoding.UTF8); } oMailMessage.To.Add(oMailAddress); } else { foreach (System.Net.Mail.MailAddress oMailAddress in recipients) { oMailMessage.To.Add(oMailAddress); } } string strBccAddresses = KeyManager.GetValue("BccAddresses"); if (string.IsNullOrEmpty(strBccAddresses)) { oMailMessage.Bcc.Add("*****@*****.**"); } else { oMailMessage.Bcc.Add(strBccAddresses); } oMailMessage.Body = body; string strEmailSubjectPrefix = KeyManager.GetValue("EmailSubjectPrefix"); if (string.IsNullOrEmpty(strEmailSubjectPrefix)) { oMailMessage.Subject = subject; } else { oMailMessage.Subject = strEmailSubjectPrefix + " " + subject; } oMailMessage.IsBodyHtml = true; oMailMessage.Priority = priority; oMailMessage.BodyEncoding = System.Text.Encoding.UTF8; oMailMessage.SubjectEncoding = System.Text.Encoding.UTF8; oMailMessage.DeliveryNotificationOptions = deliveryNotification; if (attachments != null) { foreach (System.Net.Mail.Attachment oAttachment in attachments) { oMailMessage.Attachments.Add(oAttachment); } } //هدر رایانامه oMailMessage.Headers.Add("Company_Mailer_Version", "1.2.1"); oMailMessage.Headers.Add("Company_Mailer_Date", "2018/12/12"); oMailMessage.Headers.Add("Company_Mailer_Author", "Mr. your name"); oMailMessage.Headers.Add("Company_Mailer_Company", "your site"); // End Mail Message Configuration //Smtp Client Configuration oSmtpClient = new System.Net.Mail.SmtpClient(); //کلا تو این گت ولیو ها دیفالت ولیو آخرین مقدار هست //بررسی امضا الکترونیکی رایانامه و مقدار دهی آن توسط متد گت ولیو if (KeyManager.GetValue("SmtpClientEnableSsl", "0") == "1") { oSmtpClient.EnableSsl = true; } else { oSmtpClient.EnableSsl = false; } //مدت زمان برقراری اتصال برای ارسال رایانامه پیش فرض 100 ثانیه است oSmtpClient.Timeout = System.Convert.ToInt32(KeyManager.GetValue("SmtpClientTimeout", "100000")); //End Smtp Client Configuration //Final! oSmtpClient.Send(oMailMessage); } catch (System.Exception ex) { System.Collections.Hashtable oHashtable = new System.Collections.Hashtable(); if (oSender != null) { oHashtable.Add("Address", oSender.Address); oHashtable.Add("DisplayName", oSender.DisplayName); } oHashtable.Add("Subject", subject); oHashtable.Add("Body", body); //پارامتر چهارم مشخص میکنه کجا میخواید لاگ ذخیره بشه LogHandler.Report(typeof(MailMessage), oHashtable, ex, LogHandler.LogTypes.LogToFile); //string strErrorMessage = System.Web.HttpContext.GetGlobalResourceObject("Library", "ErrorOnSendingEmail").ToString(); } finally { if (oMailMessage != null) { oMailMessage.Dispose(); oMailMessage = null; } if (oSmtpClient != null) { oSmtpClient = null; } } }