Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从MVC 4 ASP.NET应用程序发送电子邮件_C#_Asp.net Mvc_Email - Fatal编程技术网

C# 从MVC 4 ASP.NET应用程序发送电子邮件

C# 从MVC 4 ASP.NET应用程序发送电子邮件,c#,asp.net-mvc,email,C#,Asp.net Mvc,Email,我正在尝试设置简单但完整的ASP.NET MVC 4 web应用程序,在其中我可以向特定地址发送电子邮件,我为SMPT设置和控制器调用中的代码配置了web.config文件,但收到错误消息“未指定SMTP主机” 非常感谢快速查看您尚未设置“发件人”属性 var mailMessage = new MailMessage(); mailMessage.To.Add("yourEmail@hotmail.co.uk"); mailMessage.From = new MailAddress("myE

我正在尝试设置简单但完整的ASP.NET MVC 4 web应用程序,在其中我可以向特定地址发送电子邮件,我为SMPT设置和控制器调用中的代码配置了web.config文件,但收到错误消息“未指定SMTP主机”


非常感谢

快速查看您尚未设置“发件人”属性

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;

做这样的事

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();
    }
}

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

是否确实已将system.net/mailSettings元素放在网站根目录的web.config中

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

顺便提一下,
MailMessage
类实现了
IDisposable
,来自.NET 4的
SmtpClient
类也实现了这一点。因此,您应该使用块将两者都包含在
中。

  • 不确定smtp.live.com是否仍然有效,但似乎没有列出它
  • 我会检查端口25是否被阻止如果端口25被阻止,请尝试端口587(可能必须为587启用SSL)

我写了一篇关于这样做的博客文章。

我采用了更简单的方法,使用MVCMailer。即使从MVC发送电子邮件非常简单,但要使其变得美观也有点复杂,而MVCMailer允许使用razor模板来格式化电子邮件的正文


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

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

尤其是由于.NET framework中默认交付的组件完全支持所有类型的SSL/TSL等(此处的关键字为隐式/显式模式)


您缺少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);
//

我在root web.config中添加了smpt配置,但没有查看一个!我必须在web.config中设置吗???
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();
    }
}
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);
//