【问题标题】:SMTP "Failure sending mail" exception after deploy, works well with localhost部署后 SMTP“发送邮件失败”异常,适用于 localhost
【发布时间】:2017-10-28 17:54:45
【问题描述】:

使用此链接How to Implement Contact Us Page in ASP.NET MVC (ASP.NET 5 ) 中的教程。我设法让我的应用程序向我的 gmail 帐户发送电子邮件。但是,它在发布后失败并给出“发送邮件失败”错误。我已经完成了您可以在下面看到的可能的修复,但没有帮助。谢谢。

这是我的 HomeController 代码:

public ActionResult Contact(Contact c)
    {
        if (ModelState.IsValid)
        {
            try
            {
                MailMessage msg = new MailMessage();
                StringBuilder sb = new StringBuilder();
                msg.From = new MailAddress("example1@gmail.com");
                msg.To.Add("example1@gmail.com");
                msg.Subject = c.Subject;
                //msg.IsBodyHtml = false;
                sb.Append("<b>First name: </b>" + c.FirstName + "<br/><br/>");
                sb.Append("<b>Last name: </b>" + c.LastName + "<br/><br/>");
                sb.Append("<b>Email: </b>" + c.Email + "<br/><br/>");
                sb.Append("<b>Phone: </b>" + c.PhoneNumber + "<br/><br/>");
                sb.Append("<b>Message: </b>" + c.Message + "<br/><br/>");
                msg.Body = sb.ToString();
                msg.IsBodyHtml = true;
                // We use gmail as our smtp client
                SmtpClient smtpClient = new SmtpClient(); 
                smtpClient.Send(msg);
                msg.Dispose();
                ModelState.Clear();
                ViewBag.ContactMessage = "Your Message has been sent. Thank you for Contacting us. ";
            }
            catch (Exception ex)
            {
                ModelState.Clear();
                ViewBag.ContactMessage = $" Sorry we are facing the following Problem: {ex.Message}";
            }
        }
        return View();
    }

还有我的 Web.config 文件:

<system.net>
    <mailSettings>
        <smtp deliveryMethode="Network">
            <network host="smtp.gmail.com" port"587" userName="***" password="***" enableSsl="true"/>
        </smtp>
    </mailSettings>
</system.net>

【问题讨论】:

  • 注意:永远不要在网络上发布实时凭据!!!另外,有这么多免费的 SMTP 服务,您为什么要使用具有所有政策的 Google 邮件?试试 SparkpostMailgun 每月最多免费发送 10.000 封电子邮件
  • 我的错,那是错误的。那么问题是因为 m 使用谷歌吗?
  • Google 有很多限制,几年前我有一种以 SMTP 形式发送电子邮件的方法,但很快意识到不是那么稳定,我转向了实际上为此构建的服务。 . 你有几个,只需选择一个,现在的优惠是惊人的,因为 Amazon SES(每月免费 62k 封电子邮件)到 Postmark、SendGrid、AuthMailer ......等等......
  • 猜猜问题不是谷歌,因为我更改了我的域电子邮件,结果是一样的。它在 LocalHost 中调试时向我的域电子邮件发送消息,但在我发布后出现同样的错误。

标签: c# asp.net asp.net-mvc email


【解决方案1】:

如果我正确理解您的问题,那么这就是您的情况。

  1. 当您在本地使用相同的凭据时,它可以正常工作。
  2. 发布后相同的凭据不起作用。 这是谷歌的问题吗?是的。 原因:您的发布服务器似乎位于其他地方。因此,当您将站点放在那里时,gmail 假设有人试图从另一个位置访问 gmail。

    解决方案:您的帐户将收到一封电子邮件,说明您真的在尝试访问帐户吗?允许那边的权限。它可能有效。因为我遇到了同样的问题,然后它就解决了。

【讨论】:

  • 嗨,是的,但我没有收到来自谷歌的许可电子邮件。我试过很多次了。
  • 检查 Gmail 中的所有标签。
  • 我检查了所有不存在的,现在已更改为我的域电子邮件,结果相同。它在 LocalHost 中调试时向我的域电子邮件发送消息,但在我发布后出现同样的错误。
【解决方案2】:

不是一个精确的问题解决方案,但是我更改了我的域电子邮件,将 SMTP 端口更改为 80 并删除了 enableSsl 现在它可以工作了。

【讨论】:

    猜你喜欢
    • 2015-11-20
    • 2023-03-10
    • 2012-11-10
    • 2015-08-27
    • 1970-01-01
    • 2014-10-26
    • 2010-12-06
    • 1970-01-01
    • 2019-03-01
    相关资源
    最近更新 更多