2

我正在尝试设置简单但完整的 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);

非常感谢

4

7 回答 7

2

在 .NET + MVC/ASP 中使用 SMTP 邮件功能的最佳想法是这个开源 codeplex 库:

http://higlabo.codeplex.com/

特别是因为 .NET 框架中默认提供的组件确实完全支持所有类型的 SSL/TSL 等(此处为关键字的隐式/显式模式)

http://higlabo.codeplex.com/

于 2013-09-25T11:08:34.477 回答
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;
于 2013-09-24T10:17:56.253 回答
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();
    }
}
于 2013-09-24T10:21:00.337 回答
0

我写了一篇关于这样做的博客文章。 http://www.bgsoftfactory.net/5-steps-to-send-email-with-mvcmailer-from-an-mvc-4-0-application/

我采用了更简单的方法,使用 MVCMailer。即使从 MVC 发送电子邮件很容易,但要让它变得漂亮却有点复杂,而 MVCMailer 允许使用 razor 模板来格式化电子邮件的正文。

使用 MVCMailer 可以节省一些时间。

于 2013-09-24T14:49:12.080 回答
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);
//
于 2013-11-06T20:11:09.760 回答
0

您的代码和配置看起来正确。

您确定已将 system.net/mailSettings 元素放在网站根目录的 web.config 中吗?

一个常见的错误是将此类设置放在 Views 文件夹中的 web.config 中。

顺便说一句,MailMessage该类实现.NET 4IDisposable中的SmtpClient类也是如此。因此,您应该将两者都包含在using块中。

于 2013-09-24T10:34:44.717 回答
0
于 2013-09-24T10:37:01.640 回答