سلام خسته نباشید
برای ارسال ایمیل به اعضای خبرنامه از متد زیر استفاده کردم:
[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"); }
برای اینکه در یک لحظه ارسال بشه و مدیر سایت به سرعت پیغام مربوطه رو مشاهده کنه چیکار باید بکنم ؟
شما برای ارسال خبرنامه در پروژه هاتون از چه روشی استفاده می کنید؟
لطفا راهنمایی کنید ، خیلی ممنون
لازمه به استفاده از System.Threading.Thread.Sleep(3000); نیست همین باعث کند شدن این فرآیند میشه.
در یک تاپیک دیگه خوندم اگر از دستور System.Threading.Thread.Sleep(3000) استفاده نکنم ممکنه ایمیلم اسپم بشه ،البته نمیدونم این حرف برای gmail صادق هست یا نه ؟ این موضوع مشکلی ایجاد نمیکنه؟
شما در هر دقیقه نباید بیشتر از 50 ایمیل ارسال کنید
البته با gmail نمیتونید
برای ارسال ایمیل انبوه از mail server ها استفاده کنید
شما از کدام mail server استفاده میکنید؟
میشه یکی از خوب هاش رو معرفی کنید؟
ممنون
mailerlite
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)