C# 无法获取邮箱。无效收件人太多错误
我们的应用程序使用C# 无法获取邮箱。无效收件人太多错误,c#,.net,smtp,C#,.net,Smtp,我们的应用程序使用 new SmtpClient(smtpServer).Send(message); 我们正在确保smtpServer是有效的,消息必须发送到地址和来自地址、主题和正文。如果其中任何一个丢失,我们将在尝试发送消息之前记录一个异常 但应用程序经常失败,出现以下异常 电子邮件失败:System.Net.Mail.SmtpException:邮箱不可用。服务器响应为:无效收件人太多。 现在,请注意,电子邮件发送功能并非总是失败。对于同一个“收件人”地址,它失败的次数可能只有一半左右
new SmtpClient(smtpServer).Send(message);
我们正在确保smtpServer是有效的,消息必须发送到地址和来自地址、主题和正文。如果其中任何一个丢失,我们将在尝试发送消息之前记录一个异常
但应用程序经常失败,出现以下异常
电子邮件失败:System.Net.Mail.SmtpException:邮箱不可用。服务器响应为:无效收件人太多。
现在,请注意,电子邮件发送功能并非总是失败。对于同一个“收件人”地址,它失败的次数可能只有一半左右。因此,如果应用程序尝试发送电子邮件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);
任何指示?如果SMTP服务器有时接受,有时拒绝具有相同发件人和收件人的相同电子邮件,则可能是服务器反垃圾邮件策略的结果。例如:
- :当在给定时间段内超过RCPT TO命令的数量时,会导致“550太多无效收件人”错误
- 配额:限制邮箱/IP每分钟/秒可以发送的邮件数,以防止垃圾邮件
- 列出SMTP客户端的IP地址
- 禁用应用于发件人邮箱的任何配额/反垃圾邮件策略
如果这不能解决您的问题,那么请使用类似于记录SMTP对话框的工具,并准确检查RCPT to命令中发送的电子邮件地址,以及在哪些情况下SMTP服务器会拒绝这些地址。然后,把它贴在这里。
Feroz
发生这种情况的原因有很多。。如果您有单独的电子邮件,其中一封电子邮件的电子邮件地址中有无效的主机名,或者您没有正确解析收件人列表。。可能您有两个电子邮件地址冲突,例如tomthumb@aol.commarrK@gmail.com
并且没有合适的分隔符。。我建议最好的做法是设置断点,处理大列表,查看哪些电子邮件失败,并检查其值。。这可能很简单。在不向我们透露实际收件人的电子邮件地址的情况下,您能否给出一个电子邮件屏蔽或更改的确切示例…我们只有一个“收件人”和一个“抄送”电子邮件地址。类似于“axxxxs@txxxxk.com“在和中”axxxxk@rxxxxd.com“在CC中,发件人地址如下Axxxxs@rxxxxd.comThis由于所有的电子邮件都被发送到同一个“收件人”、同一个“抄送”和同一个“发件人”地址,而且其中一些邮件都失败了,所以这已经成为一个很难破解的问题。Outlook与Gmail的角度也很有趣,因为投诉开始于公司从Outlook转向Gmail的几乎同一时间。显示如何发送多封电子邮件的代码以及如何分配分隔符。。例如,您使用的是、
还是用于电子邮件分隔符的代码>。。此外,您是否正在修剪或获取最后一封电子邮件的子字符串位置,而您不必使用结尾分隔符,因此在您的检查器中应该是这样的。”axxxxs@txxxxk.com;""axxxxk@rxxxxd.com“
在抄送部分