【发布时间】:2015-03-17 17:19:37
【问题描述】:
我们的应用程序使用发送电子邮件
new SmtpClient(smtpServer).Send(message);
我们确保 smtpServer 有效,消息具有收件人地址和发件人地址、主题和正文。如果缺少其中任何一个,我们甚至会在尝试发送消息之前记录一个异常。
但应用程序经常失败并出现以下异常。
电子邮件失败:System.Net.Mail.SmtpException:邮箱不可用。服务器响应是:无效收件人太多。
现在,请注意电子邮件发送功能并非总是失败。对于同一个“To”地址,它失败了,可能是一半左右的时间。因此,如果应用程序尝试发送电子邮件 100 次,我们将收到大约 40 多次失败的相同消息。
我已经验证了收件人地址和发件人地址是否存在。自上个月我们从 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);
有什么路线吗?
【问题讨论】:
-
Feroz发生这种情况的原因有很多。如果您有单独的电子邮件,其中一封的电子邮件地址中的主机名无效,或者您没有正确解析收件人列表。 . 也许你有 2 个电子邮件地址冲突,例如tomthumb@aol.commarrK@gmail.com并且没有适当的分隔符.. 我建议的最好的事情是设置断点处理大列表并查看它在哪些电子邮件上失败并检查值..这可能就是这么简单.. -
在不向我们透露实际收件人电子邮件地址的情况下,您能否给出一个电子邮件屏蔽或更改它们的确切示例...
-
我们在“收件人”中只有一个电子邮件地址,在“抄送”中只有一个。类似于 To 中的“axxxxs@txxxxk.com”和 CC 中的“axxxxk@rxxxxd.com”,发件人地址类似于 Axxxxs@rxxxxd.com
-
这已成为一个难以破解的问题,因为所有电子邮件都被发送到相同的“收件人”、相同的“抄送”和相同的“发件人”地址,其中一些邮件失败了。 Outlook 与 Gmail 的角度也很有趣,因为投诉大约在公司从 Outlook 转向 Gmail 的同时开始出现。
-
显示您如何发送多封电子邮件以及如何为其分配分隔符的代码。例如,您是否使用
,或;作为电子邮件分隔符...修剪或获取最后一封电子邮件的子字符串位置,您不必使用结束分隔符,因此它在 CC 部分的检查员"axxxxs@txxxxk.com;""axxxxk@rxxxxd.com"中应该看起来像这样