Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法获取邮箱。无效收件人太多错误_C#_.net_Smtp - Fatal编程技术网

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服务器设置是否是问题的原因:

  • 列出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“
在抄送部分