У меня есть 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.