【问题标题】:Send EMail using asp.net mvc使用 asp.net mvc 发送电子邮件
【发布时间】:2016-04-24 22:29:14
【问题描述】:

我想在客户验证命令后向管理员发送邮件,但是当单击按钮验证器时,我收到此错误: 邮箱不可用的信件。服务器响应是:5.7.3 Requested Action aborted;用户未通过身份验证。 我在互联网上没有找到任何解决方案。

 [HttpPost]
    public async Task<ActionResult> Index2(LigneCommandeT LigneCommandeT , string submit)
    {
        switch (submit)
        { 
            case "Ajouter" : 
        context.LigneCde.Add(LigneCommandeT);
        context.SaveChanges();
        return RedirectToAction("Index2");
             break;
            case  "Valider" :
            // var message = EMailTemplate("Welcome");
            await  MessageServices.SendEmailAsync("Namegmail.com", "Welcome!",  "message");

             return RedirectToAction("Index3");
            break;
            default :
            return RedirectToAction("Index2");
            break;
        }
    }

这是 SendMail 方法:

 public async static Task SendEmailAsync(string email , string subject ,string message)
    {
        try
        {
            var _email="Name@gmail.com"; // sender's email 
            var _epass = ConfigurationManager.AppSettings["EmailPassword"]; // get our password from web.config
            var _dispName = "Sabrine";
            MailMessage  MyMessage = new MailMessage();
            MyMessage.To.Add(email);
            MyMessage.From = new  MailAddress(_email,_dispName);
            MyMessage.Subject = subject ;
            MyMessage.Body = message ;
            MyMessage.IsBodyHtml = true;

            using(SmtpClient smtp = new SmtpClient())
            {
                smtp.EnableSsl =true ;
                smtp.Host = "smtp.live.com";
                smtp.Port = 587 ;
                smtp.UseDefaultCredentials = false ;
                smtp.Credentials = new NetworkCredential(_email,_epass);
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.SendCompleted   += (s,e) => {smtp.Dispose();} ; 
                await smtp.SendMailAsync(MyMessage);


            }
        }
        catch(Exception ex)
        {
            throw ex ; 
        }

这是 Web.config 的一部分:

<appSettings>
<add key="webpages:Version" value="3.0.0.0" />
<add key="webpages:Enabled" value="false" />
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
<add key="EmailPassword" value=""  />
   </appSettings>

<system.net>
  <mailSettings>
     <smtp deliveryMethod="Network">
       <network enableSsl="true" host="smtp.live.com" port="587" defaultCredentials="false" userName="Name@gmail.com" password=""/>
     </smtp>
  </mailSettings>

谢谢,

【问题讨论】:

  • 你的配置中没有设置任何密码
  • 我设置了密码,并将“smtp.live.com”更改为“smtp.gmail.com”,但出现此错误:SMTP 服务器需要安全连接或客户端未通过身份验证.服务器响应为:5.5.1 需要身份验证。

标签: asp.net-mvc


【解决方案1】:

您代码中的以下行没有得到任何password,或者更确切地说,将password 设为空string

var _epass = ConfigurationManager.AppSettings["EmailPassword"];

由于此设置,您的config

<add key="EmailPassword" value=""  />

如果你看清楚 value 是一个空的 string 。您必须将其替换为所需的 Password,如下例所示:

<add key="EmailPassword" value="YourPassword"  />

【讨论】:

  • 我设置了密码,并将“smtp.live.com”更改为“smtp.gmail.com”,但出现此错误:SMTP 服务器需要安全连接或客户端未通过身份验证.服务器响应为:5.5.1 需要身份验证。
  • @Sarra 如果您只是在测试它是否有效,我建议您维护smtp.live.com,因为它有效
  • 感谢您的时间和帮助,我解决了问题,我停用了帐户 gmail 的安全性。它有效:D :)
【解决方案2】:

请按如下方式编辑您的代码;

        SmtpClient SmtpServer = new SmtpClient("smtp.live.com");
        var mail = new MailMessage();
        mail.From = new MailAddress("crazy_akin399999@hotmail.com");
        mail.To.Add("akin.********@gmail.com");
        mail.Subject = "Your Sub";
        mail.IsBodyHtml = true;
        string htmlBody;
        htmlBody = "HTML code";
        mail.Body = htmlBody;
        SmtpServer.Port = 587;

        SmtpServer.UseDefaultCredentials = false;

        SmtpServer.Credentials = new System.Net.NetworkCredential("****abdull*h**lu@gmail.com", "*****");
        SmtpServer.EnableSsl = true;

        SmtpServer.Send(mail);

来源链接:Send email via Hotmail to gmail

【讨论】:

  • 这是代码对我不起作用。T得到同样的错误:(:'(.
  • 嗯,我理解你的问题。我尝试了我的gmail名称outlook帐户信息,我得到你的错误,并尝试hotmail帐户信息和邮件发送成功。请从电子邮件地址更改不同的发件人电子邮件地址,然后尝试。示例:NetworkCrential("email@hotmail.com") 来自邮件地址不能 email@hotmail.com。请更改并尝试。我编辑我的答案,请检查。
  • 它与 smtp.gmail.com 一起工作,我通过使用另一个安全性较低的帐户解决了这个问题,感谢您的帮助:D
  • 我很高兴,没问题。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-11
  • 1970-01-01
  • 2018-02-13
  • 2011-05-24
  • 2012-01-10
相关资源
最近更新 更多