use*_*114 23 .net c# email asp.net-mvc asp.net-mvc-5
我在这里有点困惑 - 我收到以下错误:
未指定SMTP主机.
即使我的代码看起来是正确的(从我可以看到).
我可以通过包含控制器内部的所有细节来手动完成,例如
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");
smtpClient.Port = 587;
... etc
Run Code Online (Sandbox Code Playgroud)
但我不应该这样做,因为我想使用里面的细节mailSettings(让它可以重复用于各种不同的控制器).
mailSettings在我的Web.Config文件中:
<system.net>
<mailSettings>
<smtp from="example@gmail.com" deliveryMethod="Network" >
<network host="smtp.gmail.com" defaultCredentials="true"
port="587" enableSsl="true" userName="example@gmail.com"
password="example"/>
</smtp>
</mailSettings>
</system.net>
Run Code Online (Sandbox Code Playgroud)
我的控制器动作:
[HttpPost]
public ActionResult SubmitFeature(FormData formData)
{
SmtpClient smtpClient = new SmtpClient();
MailMessage mail = new MailMessage();
mail.To.Add(new MailAddress("example@gmail.com"));
mail.Body = "Test";
smtpClient.Send(mail);
return View("Example");
}
Run Code Online (Sandbox Code Playgroud)
我有什么遗漏可能导致这种情况吗?我没有搞乱Web.Config中的任何其他设置,它们在设置新的MVC5项目时也是如此.
Tom*_*mmy 27
在一个干净的MVC项目中,我无法复制您的问题.在这里的ScottGu博客文章之后,我能够获得一封没有问题的Gmail邮件(VS 2013,.NET 4.5.1,MVC 5).请注意,<system.net>元素是顶级元素,而不是嵌套在AppSettings或中<system.web>.
重要
解决方案中有一些web.config文件,确保将其mailSettings插入根级web.config(而不是位于Views文件夹中的那个)
Web.Config中
<configuration>
<system.net>
<mailSettings>
<smtp from="myEmail@gmail.com">
<network host="smtp.gmail.com"
port="587"
enableSsl="true"
userName="myEmail@gmail.com"
password="SuperSecretPwd"
defaultCredentials="false" /> <!--This must be false on Gmail-->
</smtp>
</mailSettings>
</system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)
调节器
var smtpClient = new SmtpClient();
var msg = new MailMessage();
msg.To.Add("MyOtherAddress@yahoo.com");
msg.Subject = "Test";
msg.Body = "This is just a test email";
smtpClient.Send(msg);
Run Code Online (Sandbox Code Playgroud)
目前还不清楚你所包含的一些额外属性是否会导致问题(他们认为不应该),例如交付方式.此外,是否有允许SMTP访问的设置或仅用于IMAP/POP传送?
如果您可以在一个干净的项目中进行测试并取得成功,那么这将指向web.config转换问题或项目中的一些其他设置,这些设置会覆盖您现有的web.config设置.