/// <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;
                }
            }
        }
Esempio n. 2
0
        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;
                }
            }
        }