SmtpClient - Отправка на разные домены

У меня есть SmtpClient, который я указал на почтовый сервер моей компании. Я могу успешно отправлять электронные письма на/с адреса в этом домене.

Однако мне нужно выполнить сброс пароля и уведомления для пользователей приложения. Эти пользователи регистрируются, используя свой собственный адрес электронной почты (несколько разных доменов).

Как я могу отправить электронное письмо пользователю другого домена? Каждый раз, когда я пытаюсь (используя свою электронную почту live.ca), я получаю следующую ошибку:

SmtpFailedRecipientsException — почтовый ящик недоступен. Ответ сервера был: 5.7.1 Невозможно ретранслировать

Код C#

SmtpClient mailClient = new SmtpClient();
MailMessage email = new MailMessage
{
    Subject = "Testing Mail",
    Body = "Testing Mail",
    From = new MailAddress("[email protected]")
};
email.To.Add(new MailAddress("[email protected]"));
mailClient.Send(email);

Код Web.config

  <system.net>
<mailSettings>
  <smtp>
    <network host="mail.myCompany.com" port="25" userName="[email protected]" password="myPassword" defaultCredentials="false"/>
  </smtp>
</mailSettings>

Update:

У меня это работает, используя следующие методы:

1) Web.config

<network host="mail.myCompany.com" port="25" userName="myNetworkUsername" password="myPassword" defaultCredentials="false" />

2) Код С#

mailClient.Credentials = new NetworkCredential("myNetworkUsername", "myPassword");
// or
mailClient.Credentials = CredentialCache.DefaultNetworkCredentials;

Во второй строке используются учетные данные того, кто вошел в систему. Это работало для локального хоста, но не тогда, когда я его развернул.

Я подумываю создать учетную запись по умолчанию для обработки почты приложения и указать имя пользователя/пароль в веб-конфигурации, но это не кажется самой безопасной практикой. Я все еще ищу альтернативы.

Обновление:

Код перестал работать, когда моя компания переключила нашего интернет-провайдера на Shaw. Мы думаем, что Шоу может блокировать порт на нашем сервере Exchange.


person Lifes    schedule 28.02.2012    source источник
comment
вы можете посмотреть на этот вопрос: stackoverflow.com/questions/444210/   -  person Mikey G    schedule 28.02.2012
comment
Это не проблема вашего кода, это ограничение SMTP-сервера вашей компании. Либо попросите их изменить домены, с которых вы можете отправлять, либо использовать другой сервер.   -  person Joe    schedule 28.02.2012
comment
Просто предположение, но попробуйте использовать порт 587.   -  person ron tornambe    schedule 28.02.2012
comment
Советы по ссылке попробую завтра.   -  person Lifes    schedule 28.02.2012
comment
Пожалуйста, не добавляйте к названиям префикс C# и тому подобное. Вот для чего нужны теги.   -  person John Saunders    schedule 28.02.2012


Ответы (1)


Вот статья, объясняющая использование порта 587 для отправки электронных писем за пределы домена: http://mostlygeek.com/tech/smtp-on-port-587

person ron tornambe    schedule 28.02.2012
comment
Хм. Я только что попробовал это на одном из своих сайтов, и это решило аналогичную проблему. Единственная разница, которую я вижу, заключается в том, что отправитель указан в элементе SMTP: ‹smtp [email protected] - person ron tornambe; 28.02.2012
comment
Только что попробовал это и получил исключение SMTP: SMTP-серверу требуется безопасное соединение, или клиент не прошел проверку подлинности. Ответ сервера был следующим: 5.7.1 Клиент не прошел аутентификацию. Спасибо за отзыв, теперь буду пробовать другие варианты. - person Lifes; 29.02.2012