如何在 web.config 中配置 SMTP 设置
Posted
技术标签:
【中文标题】如何在 web.config 中配置 SMTP 设置【英文标题】:How to configure SMTP settings in web.config 【发布时间】:2013-10-14 12:20:59 【问题描述】:我正在尝试解决与继承网站有关的电子邮件问题,并且无法访问代码(即仅编译文件)。此站点需要托管在具有不同 SMTP 服务器的新 Web 服务器上。
在反编译代码位时,我可以看到电子邮件是使用如下代码 sn-p 中的方法发送的,并且 SMTP 设置为 smtpMail.SmtpServer="localhost" 但我的新网络服务器的 SMTP 服务器是“relay.tadab.com”我们如何在 web.config 中配置它,以便将 localhost 视为“relay.tagadab.com”
Imports Microsoft.VisualBasic, System.Web.Mail
Shared Sub SendMail(ByVal ToAdd, ByVal FromAdd, ByVal Message, ByVal Subject)
Dim msgMail As New MailMessage()
msgMail.To = ToAdd
msgMail.From = FromAdd
msgMail.Subject = Subject
msgMail.Headers.Add("X-Mailer", "ASP.NET")
msgMail.BodyFormat = MailFormat.Text
msgMail.Body = Message
'SmtpMail.SmtpServer = "mail.the-radiator.com"
SmtpMail.SmtpServer = "localhost"
SmtpMail.Send(msgMail)
End Sub
我在 web.config 中添加了这个部分,但这并没有什么不同
<system.net>
<mailSettings>
<smtp>
<network host="relay.tagadab.com" port="25" />
</smtp>
</mailSettings>
</system.net>
【问题讨论】:
只需 configure IIS 以便 SMTP 本地主机将邮件转发到 relay.tadab.com。 @nunzabar 你能给我一个例子,我们如何转发它 【参考方案1】:Web.Config 文件:
<configuration>
<system.net>
<mailSettings>
<smtp from="yourmail@gmail.com">
<network host="smtp.gmail.com"
port="587"
userName="yourmail@gmail.com"
password="yourpassword"
enableSsl="true"/>
</smtp>
</mailSettings>
</system.net>
</configuration>
【讨论】:
C# 方面呢?请提供代码示例? 代码示例:SmtpClient smtpClient = new SmtpClient(); smtpClient.Send(msgMail); @Sanjay kumar 它还能用吗?尝试将 gmail 与 smtp 一起使用时,我收到以下错误:“SMTP 服务器需要安全连接或客户端未通过身份验证。服务器响应为:5.5.1 需要身份验证。”。 @dpant 您需要在 Gmail 中启用安全性较低的应用【参考方案2】:我没有足够的代表来回答 ClintEastwood,并且接受的答案对于 Web.config 文件是正确的。添加此代码差异。
在 Web.config 上设置 mailSettings 后,除了新建 SmtpClient 和 .Send 之外,您无需执行任何操作。它无需引用即可找到连接本身。你会改变你的C#:
SmtpClient smtpClient = new SmtpClient("smtp.sender.you", Convert.ToInt32(587));
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("username", "password");
smtpClient.Credentials = credentials;
smtpClient.Send(msgMail);
对此:
SmtpClient smtpClient = new SmtpClient();
smtpClient.Send(msgMail);
【讨论】:
感谢您的解释,我几乎没有使用上面答案中的代码,因为我不明白它在我的控制器中是如何工作的。非常感谢。【参考方案3】:设置 IIS 以将您的邮件转发到远程服务器。具体取决于 IIS 的版本。对于 IIS 7.5:
-
打开 IIS 管理器
如果需要,连接到您的服务器
选择服务器节点;您应该会在 ASP.NET 部分的右侧看到一个 SMTP 选项
双击 SMTP 图标。
选择“将电子邮件发送到 SMTP 服务器”选项并输入您的服务器名称、凭据等。
【讨论】:
我已经尝试在 web.config 中添加一个部分(请参阅我的问题),但这并没有什么不同。当我打开 SMTP 电子邮件时,我在 IIS 中看到完全相同的内容 再仔细看看,你必须确定SmtpMail
是如何实例化的。仅当您使用 default constructor 时才会引用 Web.config。以上是关于如何在 web.config 中配置 SMTP 设置的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Web.config 读取 system.net/mailSettings/smtp
dotnet core 2.0中appSettings.json中的SMTP设置