Наше приложение отправляет электронные письма, используя
new SmtpClient(smtpServer).Send(message);
Мы убедились, что smtpServer действителен, сообщение имеет To и From адреса, тему и тело. Если какой-либо из них отсутствует, мы отправили бы исключение, прежде чем пытались отправить сообщение.
Но приложение часто терпит неудачу с приведенным ниже исключением.
Ошибка электронной почты: 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, это может быть результатом политики антиспама сервера. Например:
Вы можете проверить, являются ли параметры SMTP-сервера причиной вашей проблемы (временно):
Если это не решит вашу проблему, используйте инструмент, например WireShark, для записи диалога SMTP и проверки того, какие адреса электронной почты отправляются в команде RCPT TO, и в каких случаях сервер SMTP отвергает их. Затем отправьте его здесь.
Feroz
это может произойти по ряду причин ... если у вас есть отдельные электронные письма, и у одного из них есть неправильное имя хоста в их адресе электронной почты, или если вы не проанализировали список получателей должным образом ... возможно, у вас есть 2 адреса электронной почты, например, конфликтующие[email protected]@gmail.com
и нет подходящего разделителя ... лучшее, что я бы посоветовал, - это установить точки[email protected]@gmail.com
обработать большой список и посмотреть, на каких письмах он не работает, и проверить значение ... это, вероятно, что-то так просто ..