我有一个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;
第二行使用登录的任何人的凭据。它适用于本地主机,但不适用于我部署它。
我正在考虑创建一个默认帐户来处理应用程序的邮件并将用户名/ pw放在Web配置中,但这似乎不是最安全的做法。我还在研究其他选择。
更新
当我的公司将ISP改为Shaw时,代码停止工作。我们认为Shaw可能阻止了Exchange Server上的端口。