我们的应用程序使用
发送电子邮件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);
任何指示?
答案 0 :(得分:0)
如果有时接受具有相同发件人和收件人的同一电子邮件,有时会被SMTP服务器拒绝,则可能是服务器反垃圾邮件策略的结果。例如:
您可以(暂时)验证SMTP服务器设置是否是导致问题的原因:
如果这不能解决您的问题,请使用WireShark之类的工具记录SMTP对话框,并确切地检查RCPT TO命令中发送的电子邮件地址,以及SMTP服务器在哪些情况下拒绝它们。然后,在这里发布。