我正在使用smtp.corp从ASP.NET站点发送电子邮件。 当选择50封邮件时,这里发送所有邮件(它显示发送状态),但只有少数成员正在接收邮件(只有10个成员)。如何在asp.net中发送批量电子邮件?
如果选择15封邮件,则会发送10封邮件,但其余邮件不会发送。我从SMTP服务器收到此错误的剩余电子邮件:
服务不可用,关闭传输通道。服务器 响应是:并发SM太多
System.Net.Mail.MailMessage MyMailMessage = new System.Net.Mail.MailMessage();
try
{
if (From == "") From = GetConfigVal("emailfrom");
//System.Net.Mail.MailMessage MyMailMessage = new
System.Net.Mail.MailMessage(From, To, Subject, MailBody);
if (FromName.Trim() != "")
{
MyMailMessage.From = new System.Net.Mail.MailAddress(From, FromName);
}
else
{
MyMailMessage.From = new System.Net.Mail.MailAddress(From);
}
MyMailMessage.To.Add(To);
MyMailMessage.Subject = Subject;
MyMailMessage.Body = MailBody;
if (ReplyEmailID.Trim() != "")
{
MyMailMessage.ReplyToList.Add(new
System.Net.Mail.MailAddress(ReplyEmailID));
}
if (CC.Trim() != "")
{
MailAddress copy = new MailAddress(CC);
MyMailMessage.CC.Add(copy);
}
MyMailMessage.IsBodyHtml = isHTML;
//Proper Authentication Details need to be
// passed when sending from gmail
System.Net.NetworkCredential mailAuthentication = new
System.Net.NetworkCredential(GetConfigVal("smtpuser"),
GetConfigVal("smtppassword"));
//For different server like yahoo this details changes and you can
//get it from respective server.
System.Net.Mail.SmtpClient mailClient = new System.Net.Mail.SmtpClient(GetConfigVal("smtp"), int.Parse(GetConfigVal("smtpport")));
//Enable SSL
//mailClient.EnableSsl = true;
//mailClient.Port = 25;
mailClient.EnableSsl = false;
//mailClient.UseDefaultCredentials = true;
mailClient.Credentials = mailAuthentication;
mailClient.Send(MyMailMessage);
}
答案 0 :(得分:2)
听起来好像服务器告诉了你你的问题 - 并发连接太多了。
很难有效地从您自己的服务器批量发送电子邮件,因为许多服务器都有保护措施阻止人们发送批量电子邮件(有充分理由)......无论是以编程方式还是从您自己的收件箱中发送。
您可能需要
撰写错开电子邮件发送的服务
如果是相同的消息,请发送一条消息并BCC所有人
使用合法的群发邮件程序
我认为2或3是你唯一真正的选择。即使你绕过了SMTP错误,就像@Alexandre所说,他们可能只是最终进入用户的垃圾邮件箱......如果你开始从你的服务器发送大量邮件,你将不得不开始担心关于诸如“发件人声誉”之类的事情,以免你的知识产权最终被列入黑名单“垃圾邮件发送者”,主要的电子邮件提供商根本决定不发送你的电子邮件。这会破坏你甚至在一个人注册时发送单个“感谢注册”电子邮件的能力。
当然,100封电子邮件真的不是那么多,所以1 可能是一个选项。但是考虑到您的代码备注引用了Gmail,那么将来会遇到更多问题,因为它们来自服务器actively prohibit sending bulk mail。