مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

morteza373

عضویت از 1394/10/30

ارسال ایمیل خبرنامه با سرعت مناسب

  • یکشنبه 2 دی 1397
  • 20:21
تشکر میکنم

سلام خسته نباشید

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

        [HttpPost]
        [ValidateAntiForgeryToken]
        public async Task<ActionResult> SendNewsletter(NewsletterMail model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    List<MailAddress> ToList = new List<MailAddress>();
                    NewsLetterRepository nlr = new NewsLetterRepository();
                    var elist = nlr.Select();
                    foreach (var e in elist)
                    {
                        ToList.Add(new MailAddress(e.Email));
                    }

                    foreach (var To in ToList)
                    {
                        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                        message.To.Add(To);
                        message.From = new MailAddress(mailfrom);  // replace with valid value
                        message.Subject = model.MailSubject;
                        message.Body = model.MailBody;
                        message.IsBodyHtml = true;
                        var smtp = new SmtpClient();
                        var credential = new NetworkCredential
                        {
                            UserName = mailuserName,
                            Password = mailpassword
                        };
                        smtp.Credentials = credential;
                        smtp.Host = mailhost;
                        smtp.Port = mailport;
                        smtp.EnableSsl = true;
                        await smtp.SendMailAsync(message);
                        System.Threading.Thread.Sleep(3000);
                    }
                    TempData["Success"] = "عملیات با موفقیت انجام شد.";
                }
                catch (Exception ex)
                {
                    TempData["Error"] = ex.Message;
                }
            }
            else
            {
                TempData["Error"] = ModelState.GetErrors();
            }
           
            return RedirectToAction("SendNewsletter");
        }

در قسمت ویو مدیر سایت موضوع و متن ایمیل را می نویسد و با ارسال فرم به سرور متد بالا اجرا میشه ولی ظاهرا سرعت ارسال خیلی کمه و مدیر برای لود مجدد صفحه و مشاهده پیغام "ارسال شد"خیلی باید منتظر بمونه ،

متد بالا رو به صورت زیر هم امتحان کردم (بدون استفاده از async و await) ولی زیاد تاثیری نداشت:

     [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult SendNewsletter(NewsletterMail model)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    List<MailAddress> ToList = new List<MailAddress>();
                    NewsLetterRepository nlr = new NewsLetterRepository();
                    var elist = nlr.Select();
                    foreach (var e in elist)
                    {
                        ToList.Add(new MailAddress(e.Email));
                    }

                    foreach (var To in ToList)
                    {
                        System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
                        message.To.Add(To);
                        message.From = new MailAddress(mailfrom);  // replace with valid value
                        message.Subject = model.MailSubject;
                        message.Body = model.MailBody;
                        message.IsBodyHtml = true;
                        var smtp = new SmtpClient();
                        var credential = new NetworkCredential
                        {
                            UserName = mailuserName,
                            Password = mailpassword
                        };
                        smtp.Credentials = credential;
                        smtp.Host = mailhost;
                        smtp.Port = mailport;
                        smtp.EnableSsl = true;
                        smtp.Send(message);
                        System.Threading.Thread.Sleep(3000);
                    }
                    TempData["Success"] = "عملیات با موفقیت انجام شد.";
                }
                catch (Exception ex)
                {
                    TempData["Error"] = ex.Message;
                }
            }
            else
            {
                TempData["Error"] = ModelState.GetErrors();
            }
           
            return RedirectToAction("SendNewsletter");
        }

برای اینکه در یک لحظه ارسال بشه و مدیر سایت به سرعت پیغام مربوطه رو مشاهده کنه چیکار باید بکنم ؟

شما برای ارسال خبرنامه در پروژه هاتون از چه روشی استفاده می کنید؟

لطفا راهنمایی کنید ، خیلی ممنون

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

سهیل علیزاده

عضویت از 1396/04/09

  • دوشنبه 3 دی 1397
  • 06:10

لازمه به استفاده از   System.Threading.Thread.Sleep(3000); نیست همین باعث کند شدن این فرآیند میشه.

کاربر سایت

morteza373

عضویت از 1394/10/30

  • دوشنبه 3 دی 1397
  • 11:26

در یک تاپیک دیگه خوندم اگر از دستور System.Threading.Thread.Sleep(3000)  استفاده نکنم ممکنه ایمیلم اسپم بشه ،البته نمیدونم این حرف برای gmail صادق هست یا نه ؟ این موضوع مشکلی ایجاد نمیکنه؟

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 3 دی 1397
  • 11:32

شما در هر دقیقه نباید بیشتر از 50 ایمیل ارسال کنید 

البته با gmail نمیتونید 

برای ارسال ایمیل انبوه از mail server ها استفاده کنید 

کاربر سایت

morteza373

عضویت از 1394/10/30

  • دوشنبه 3 دی 1397
  • 11:35

شما از کدام mail server استفاده میکنید؟

میشه یکی از خوب هاش رو معرفی کنید؟

ممنون

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 3 دی 1397
  • 11:52

mailerlite

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)