0

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

}
4

1 回答 1

2

听起来服务器已经告诉您您的问题 - 并发连接太多。

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

您可能需要

  1. 编写一个错开电子邮件发送的服务

  2. 如果是同一条消息,发送一条消息并密送所有人

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

我认为 2 或 3 是您唯一真正的选择。即使您确实绕过了 SMTP 错误,就像@Alexandre 说的那样,它们可能最终只会出现在用户的垃圾邮件框中……如果您开始从服务器发送批量邮件,您将不得不开始担心关于“发件人声誉”之类的事情,以免您的 IP 最终被列为“垃圾邮件发送者”,而主要的电子邮件提供商只是决定根本不发送您的电子邮件。这可能会破坏您在某人注册时甚至发送一封“感谢您注册”电子邮件的能力。

诚然,100 封电子邮件确实不算多,因此 1 封可能是一种选择。但是考虑到您的代码注释引用了 Gmail,那么您将来会遇到更多问题,因为他们积极禁止从其服务器发送批量邮件。

于 2013-10-18T13:04:31.087 回答