发送批量电子邮件(超过100封邮件)

时间:2013-10-18 11:17:44

标签: asp.net email smtpclient

我正在使用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);

}

1 个答案:

答案 0 :(得分:2)

听起来好像服务器告诉了你你的问题 - 并发连接太多了。

很难有效地从您自己的服务器批量发送电子邮件,因为许多服务器都有保护措施阻止人们发送批量电子邮件(有充分理由)......无论是以编程方式还是从您自己的收件箱中发送。

您可能需要

  1. 撰写错开电子邮件发送的服务

  2. 如果是相同的消息,请发送一条消息并BCC所有人

  3. 使用合法的群发邮件程序

  4. 我认为2或3是你唯一真正的选择。即使你绕过了SMTP错误,就像@Alexandre所说,他们可能只是最终进入用户的垃圾邮件箱......如果你开始从你的服务器发送大量邮件,你将不得不开始担心关于诸如“发件人声誉”之类的事情,以免你的知识产权最终被列入黑名单“垃圾邮件发送者”,主要的电子邮件提供商根本决定不发送你的电子邮件。这会破坏你甚至在一个人注册时发送单个“感谢注册”电子邮件的能力。

    当然,100封电子邮件真的不是那么多,所以1 可能是一个选项。但是考虑到您的代码备注引用了Gmail,那么将来会遇到更多问题,因为它们来自服务器actively prohibit sending bulk mail