У меня есть 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("myAddress@myCompany.com")
};
email.To.Add(new MailAddress("myAddress@live.ca"));
mailClient.Send(email);
Код Web.config
<system.net>
<mailSettings>
<smtp>
<network host="mail.myCompany.com" port="25" userName="myAddress@myCompany.com" password="myPassword" defaultCredentials="false"/>
</smtp>
</mailSettings>
Обновление:
У меня все работает, используя следующие методы:
1) Web.config
<network host="mail.myCompany.com" port="25" userName="myNetworkUsername" password="myPassword" defaultCredentials="false" />
2) код C #
mailClient.Credentials = new NetworkCredential("myNetworkUsername", "myPassword");
// or
mailClient.Credentials = CredentialCache.DefaultNetworkCredentials;
Во 2-й строке используются учетные данные того, кто вошел в систему. Он работал для локального хоста, но не тогда, когда я его развернул.
Я подумываю о создании учетной записи по умолчанию для обработки почты приложения и внесении имени пользователя / pw в веб-конфигурацию, но это не кажется самой безопасной практикой. Я все еще ищу альтернативы.
Обновление:
Код перестал работать, когда моя компания переключила нашего провайдера на Shaw. Мы думаем, что Шоу может блокировать порт на нашем сервере Exchange.