Отправка электронной почты через SMTP с внутреннего адреса электронной почты - почтовый ящик недоступен или не локальный (.NET 4) - PullRequest
0 голосов
/ 26 января 2011

Моя проблема в том, что я не могу отправлять SMTP-письма, отправленные получателем, размещенным на моем сервере.У меня есть контактные формы, которые отлично работают для писем с получателем от получателя в качестве внешнего адреса электронной почты, но теперь мне требуется, чтобы одна из моих систем отправляла электронные письма из домена, размещенного на том же сервере, на любую другую предоставленную электронную почту (подписчик), и это просто дает мнеошибка:

Ошибка отправки электронной почты: почтовый ящик недоступен.Ответ сервера: Запрошенное действие не выполнено: почтовый ящик недоступен или не локальный

Я работаю mailEnable на сервере Windows с IIS7 и задавался вопросом, была ли у кого-нибудь эта проблема?Я проверил почтовый ящик, используя вышеизложенные подробности через Outlook, и он отлично отправляет / получает электронные письма.Ниже приведен пример кода, показывающий, что я использую, и, насколько я знаю, это должно хорошо проходить аутентификацию.Я также попытался переместить настройки конфигурации обратно в код C #, и у меня возникла та же проблема.

Пример web.config:

<system.net>
    <mailSettings>
        <smtp deliveryMethod="Network" from="test@test.com">
            <network defaultCredentials="true" host="mail.test.com" port="25" userName="test@test.com" password="******" />
        </smtp>
    </mailSettings>
</system.net>

Пример кода C # .NET 4:

try
{
 _emailMsg.Body = _MessageBody;
 _emailMsg.Priority = MailPriority.Normal;

 SmtpClient mSmtpClient = new SmtpClient();

 mSmtpClient.UseDefaultCredentials = true;

 mSmtpClient.Send(_emailMsg);
 return true;
}
catch (Exception ex)
{
 throw new Exception("Error Sending Email: " + ex.Message);

 return false;
}

Ответы [ 2 ]

1 голос
/ 18 ноября 2012

Используйте это:

try {
    _emailMsg.Body = _MessageBody;
    _emailMsg.Priority = MailPriority.Normal;

     SmtpClient mSmtpClient = new SmtpClient(server,25);
     mSmtpClient.Send(_emailMsg);
     return true;
} catch (Exception ex) { 
     throw new Exception("Error Sending Email: " + ex.Message);
     return false;
}
1 голос
/ 27 января 2011

Глядя на веб-сайт MailEnable, есть некоторые инструкции по сообщениям об ошибках , которые могут появиться.

Если немного догадаться, кажется, что ваше доменное имя существует на веб-сервере и тамНет проблем, но вы должны явно белый список любые адреса электронной почты в файле address-map.tab.Есть еще несколько замечаний по этому вопросу, и их полное решение:

Разрешение здесь действительно разрешается, когда вы думаете, что эта ошибка возвращается, когда это не должно быть.Если предполагается, что адрес существует на сервере, необходимо проверить активность журналов SMTP для транзакции, а затем отладку, чтобы увидеть, есть ли описания ошибок, которые лучше объясняют, что произошло, когда адрес был отправлен.Затем вы должны проверить свою конфигурацию, чтобы убедиться, что адрес существует.Также может быть полезно проверить файл address-map.tab в каталоге MailEnable \ Config или в соответствующей таблице базы данных на наличие строки, содержащей имя почтового ящика.Если вы проверяете, почему отправитель не может ретранслировать через сервер, вам следует в это время проверить настройки клиента и убедиться, что исходящие настройки в клиенте настроены таким образом, чтобы они могли передавать через сервер на нелокальные адреса электронной почты.

...