我们正在向所有已注册此服务的用户发送免费通讯。由于这些简报是免费发送的,我们预计一个月内至少有5000个订阅者。我担心使用SMTP服务器概念的批量邮件是否会引起一些问题。首先,我们考虑开发一种Windows服务,该服务会定期向订阅者自动发送邮件,但业务用户已经要求管理员可以编辑新闻简报,然后只邮寄给用户,因此我们必须在网站本身开发此功能! 。我在数据表中获取特定用户的订阅者,然后向内部的每个用户发送for循环,这会导致任何性能问题吗? 代码粘贴在下面:
dsEmailds.Tables [0]包含简报订阅者列表。
for (iCnt = 0; iCnt < dsEmailIds.Tables[0].Rows.Count; iCnt++)
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("newsletters@domainname.com", "test1");
msg.To.Add(dsEmailIds.Tables[0].Rows[iCnt]["mailid"]);
msg.IsBodyHtml = true;
msg.Subject = subject;
AlternateView av1 = AlternateView.CreateAlternateViewFromString(MailMsg, null, System.Net.Mime.MediaTypeNames.Text.Html);
av1.LinkedResources.Add(lnkResLogo);
av1.LinkedResources.Add(lnkResSalesProperty);
av1.LinkedResources.Add(lnkResLeaseProperty);
msg.AlternateViews.Add(av1);
SmtpClient objSMTPClient = new SmtpClient(System.Configuration.ConfigurationManager.AppSettings["mailserver"].ToString());
objSMTPClient.DeliveryMethod = SmtpDeliveryMethod.Network;
objSMTPClient.Send(msg);
}
任何建议都会很棒!
答案 0 :(得分:4)
你应该停止并考虑所有事情:
黑名单:有了这笔金额,您肯定会在严重的ISP /邮件服务器中列出,并且您需要证明收到的用户要求提供此类电子邮件并等待1到他们删除标志时的3个月过程
您需要以块发送电子邮件,每次不超过250封,使用不同的IP机器发送更多电子邮件(更多块)
请阅读一些很好的指导方针来完成所有这些操作,您可以在MailChimp和Campaign Monitor
中找到它您应该使用像Mailchimp这样的服务(现在可以免费获得1000个订阅,每月发送3000个),但价格为very cheap且他们有一个API ,您可以轻松添加,创建,发送,你将得到所有关于如何打开,他们做了什么等等的好报告......
广告系列监控也很棒,但有点more expensive,但很棒,因为您可以将整个用户界面品牌化并作为服务销售给您的客户(如果您是想在不久的将来做这样的事情)。
我希望它有所帮助。
试一试,我是一个快乐的客户。
答案 1 :(得分:1)
我看到的主要问题是您可能会遇到页面超时。在我看来,最好的方法是设置一个服务,通过从队列中读取来处理与邮件相关的使用(例如模板化)。您的网站可以发布您希望在队列中发送的邮件,然后提供基本管理面板来管理服务并获取一些统计信息。
你可以使用开源和放大器用于队列的xcopy友好系统(如Rhino队列,ServiceBus)和Topshelf(如果您想轻松设置)
但我建议您不要在网页上发送批量电子邮件
答案 2 :(得分:0)
有一个SendAsync方法实际上将这些请求排队并从您的线程发送它们异步。这样你就可以防止超时,你可以在几秒钟内发送(即排队)5000封电子邮件。
答案 3 :(得分:0)
OR