我正在尝试设置简单但完整的ASP.NET MVC 4 Web应用程序,我可以在其中发送电子邮件到特定地址,我为控制器调用中的SMPT设置和代码配置web.config文件,但是我收到错误消息“未指定SMTP主机”
<system.net>
<mailSettings>
<smtp deliveryMethod="Network" from="myEmail@hotmail.co.uk">
<network host="smtp.live.com" port="25" userName="myEmail@hotmail.co.uk" password="myPassword" defaultCredentials="true"/>
</smtp>
</mailSettings>
控制器类中的
var mailMessage = new MailMessage();
mailMessage.To.Add("yourEmail@hotmail.co.uk");
mailMessage.Subject = "testing 2 ";
mailMessage.Body = "Hello Mr. Aderson";
mailMessage.IsBodyHtml = false;
var smptClient = new SmtpClient { EnableSsl = false };
smptClient.Send(mailMessage);
非常感谢
答案 0 :(得分:2)
在.NET + MVC / ASP中使用SMTP邮件功能的最佳方法是这个开源的codeplex库:
特别是因为.NET框架中的默认交付组件完全支持所有类型的SSL / TSL等(隐式/显式模式作为关键字)
答案 1 :(得分:1)
快速查看一下,您还没有设置“发件人”属性。
var mailMessage = new MailMessage();
mailMessage.To.Add("yourEmail@hotmail.co.uk");
mailMessage.From = new MailAddress("myEmail@hotmail.co.uk");
mailMessage.Subject = "testing 2 ";
mailMessage.Body = "Hello Mr. Aderson";
mailMessage.IsBodyHtml = false;
答案 2 :(得分:0)
做这样的事情
SmtpClient smtp = new SmtpClient(ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtp], Convert.ToInt32(ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtpport]));
if (ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtpUseCredentials] == "true")
{
smtp.Credentials = new System.Net.NetworkCredential(ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtpusername], ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtppassword], ConfigurationManager.AppSettings[EFloOnline.Model.Constants.smtp]);
}
else
{
smtp.Credentials = System.Net.CredentialCache.DefaultNetworkCredentials;
if (SendTo.Count == 0)
{
SendTo.Add(ConfigurationManager.AppSettings[EFloOnline.Model.Constants.ToMail]);
}
foreach (string recipientemail in SendTo)
{
oEmail.To.Add(recipientemail);
try
{
smtp.Send(oEmail);
}
catch (Exception)
{
}
oEmail.To.Clear();
}
}
答案 3 :(得分:0)
您的代码和配置看起来正确。
您确定已将system.net/mailSettings元素放在网站根目录中的web.config中吗?
常见的错误是将这些设置放在Views文件夹中的web.config中。
顺便说一句,MailMessage
类实现IDisposable
,.NET 4中的SmtpClient
类也是如此。所以你应该将它们都包含在using
块中。
答案 4 :(得分:0)
答案 5 :(得分:0)
我写了一篇关于这样做的博文。 http://www.bgsoftfactory.net/5-steps-to-send-email-with-mvcmailer-from-an-mvc-4-0-application/
我使用MVCMailer采用了更简单的方法。即使从MVC发送电子邮件非常简单,使它变得更加复杂也有点复杂,而MVCMailer允许使用剃刀模板来格式化电子邮件的正文。
使用MVCMailer可以节省一些时间。
答案 6 :(得分:0)
你错过了smptClient.Send(mailMessage);在代码的最后
var mailMessage = new MailMessage();
mailMessage.To.Add("yourEmail@hotmail.co.uk");
mailMessage.From = new MailAddress("myEmail@hotmail.co.uk");
mailMessage.Subject = "testing 2 ";
mailMessage.Body = "Hello Mr. Aderson";
mailMessage.IsBodyHtml = false;
//this what you miss
smptClient.Send(mailMessage);
//