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

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

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

یکشنبه, 02 دی 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");
        }

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

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

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

دوشنبه, 03 دی 1397 06:10

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

کسانی که از این پست تشکر کرده اند : morteza373,
دوشنبه, 03 دی 1397 11:26

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

دوشنبه, 03 دی 1397 11:32

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

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

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

کسانی که از این پست تشکر کرده اند : morteza373,
دوشنبه, 03 دی 1397 11:35

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

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

ممنون

دوشنبه, 03 دی 1397 11:52
کسانی که از این پست تشکر کرده اند : morteza373,

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید