获取邮箱不可用。收件人无效的错误太多

时间:2015-01-19 16:21:27

标签: c# .net smtp

我们的应用程序使用

发送电子邮件
new SmtpClient(smtpServer).Send(message);

我们确保smtpServer有效,消息包含To和From地址,主题和正文。如果缺少其中任何一个,我们会在尝试发送消息之前记录异常。

但是应用程序经常因以下异常而失败。

电子邮件失败:System.Net.Mail.SmtpException:邮箱不可用。服务器响应为:收件人数太多。

现在请注意,电子邮件发送功能并非始终失败。对于相同的“To”地址,它失败,可能是大约一半的时间。因此,如果应用程序尝试发送100次电子邮件,我们将使用相同的消息获得大约40多个失败。

我已经验证了To地址和From地址存在。自从上个月我们从Outlook迁移到Gmail以来,我们看到了这个问题。 这是代码。

if (fromAddress.Length == 0)
                fromAddress = Resources.FromAddress;

            if (toAddress.Length == 0) return "To Address is Required.";


            if (smtpServer.Length == 0)
                smtpServer = Resources.SMTPServer;

            if (string.IsNullOrEmpty(smtpServer))
                return "SMTP sever not specified";


            MailMessage mailMessage = new MailMessage();

            //set the addresses
            mailMessage.From = new MailAddress(fromAddress);
            string[] toAdds = toAddress.Split(';');
            short i = 0;
            foreach (string address in toAdds)
            {
               if(i==0) mailMessage.To.Add(address); else  mailMessage.CC.Add(address);
                i++;
            }

            if (!string.IsNullOrEmpty(bcc))
            {
                string[] bccAddresses = bcc.Split(';');

                foreach (string address in bccAddresses)
                {
                    mailMessage.Bcc.Add(address);
                }
            }

            if (!string.IsNullOrEmpty(cc))
            {
                string[] ccAddresses = cc.Split(';');

                foreach (string address in ccAddresses)
                {
                    mailMessage.CC.Add(address);
                }
            }

            if (subject.Length > 0)
                mailMessage.Subject = subject;

            mailMessage.Body = sBody;
            mailMessage.IsBodyHtml = true;

            SmtpClient emailClient = new SmtpClient(smtpServer);
            emailClient.Send(mailMessage);

任何指示?

1 个答案:

答案 0 :(得分:0)

如果有时接受具有相同发件人和收件人的同一电子邮件,有时会被SMTP服务器拒绝,则可能是服务器反垃圾邮件策略的结果。例如:

  • Directory Harvest Attack Prevention (DHAP):在给定的时间段内超过一定数量的RCPT TO命令时会导致“550太多无效收件人”错误。
  • 配额:限制邮箱/ IP每分钟/秒发送的邮件数量,以防止发送垃圾邮件。

您可以(暂时)验证SMTP服务器设置是否是导致问题的原因:

  • 将SMTP客户端的IP地址列入白名单
  • 禁用应用于发件人邮箱的任何配额/反垃圾邮件策略

如果这不能解决您的问题,请使用WireShark之类的工具记录SMTP对话框,并确切地检查RCPT TO命令中发送的电子邮件地址,以及SMTP服务器在哪些情况下拒绝它们。然后,在这里发布。