【问题标题】:send email by smtp and ajax in asp.net mvc在 asp.net mvc 中通过 smtp 和 ajax 发送电子邮件
【发布时间】:2018-05-18 20:26:13
【问题描述】:

我是 ASP.NET MVC 的初学者,并尝试在 webApplication 中使用 smtp serverajax 获取电子邮件。当用户单击按钮时,我的代码将生成电子邮件,该电子邮件将发送到所需的 ID。我通过调试代码成功地获得了所有值。但是,我无法在那里收到电子邮件。虽然,我也从浏览器获得 Success 按摩。但是在我想要的帐户中没有电子邮件。

Index.cshtml

<div>
    <a class="btn btn-primary btn-block btn-lg" onclick="SendEmail()" >Click to send Email</a>
</div>

<script>
    var SendEmail = function () {
        $.ajax({
            type: "Post",
            url: "/Feedbacks/SendMailToUser",
            success: function (data) {
                alert("Success");
            }
        })
    }
</script>

FeedbacksController.cs

public JsonResult SendMailToUser() {
            bool result = false;
            result = SendEmail("abc@gmail.com", "Test", "<p>Hi abc,<br/>This message is for testing purpose. So don't be upset.<br/>Kind Regards,<br/>abc</p>");
            return Json(result, JsonRequestBehavior.AllowGet);
        }
        public bool SendEmail(string toEmail, string subject, string emailBody) {
            try
            {
                string senderEmail = System.Configuration.ConfigurationManager.AppSettings["SenderEmail"].ToString();
                string senderPassword = System.Configuration.ConfigurationManager.AppSettings["SenderPassword"].ToString();

                SmtpClient client = new SmtpClient("smtp.gmail.com", 578);
                client.EnableSsl = true;
                client.Timeout = 100000;
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new NetworkCredential(senderEmail, senderPassword);

                MailMessage mailMessage = new MailMessage(senderEmail, toEmail, subject, emailBody);
                mailMessage.IsBodyHtml = true;
                mailMessage.BodyEncoding = UTF8Encoding.UTF8;

                client.Send(mailMessage);

                return true;
            }
            catch (Exception ex) {
                return false;
            }

        }
    }

Web.config

<appSettings>
    <add key="SenderEmail" value="abc@gmail.com" />
    <add key="SenderPassword" value="********" />
</appSettings>

【问题讨论】:

  • 你的ajax回调中data的值是多少?是真的还是假的?如果它是假的,你知道你的代码的哪一部分正在被执行。
  • 更改您的端口号以及将 enableSSL 更改为 false
  • @UbiquitousDevelopers 仅当您想发送不安全的电子邮件时 :-)
  • @ADyson - 我认为这是邮件无法成功运行的主要原因。!
  • 我认为你为 SMTP 服务设置了错误的端口号,应该是这样的:SmtpClient client = new SmtpClient("smtp.gmail.com", 587);(GMail 的 SMTP TLS 端口是 587 而不是 578,或者为 SSL 使用 465)。尝试按照建议更改端口号,看看它是否发送生成的邮件。

标签: ajax asp.net-mvc smtpclient


【解决方案1】:

我已经解决了我的问题,因为我使用了错误的端口号。当我使用

SmtpClient client = new SmtpClient("smtp.gmail.com", 587);

而不是

SmtpClient client = new SmtpClient("smtp.gmail.com", 578);

我在那里收到了电子邮件。

【讨论】:

    【解决方案2】:

    尝试在没有对象初始化器的情况下使用SmtpClient

    SmtpClient client = new SmtpClient();
    

    【讨论】:

      【解决方案3】:

      你插入了错误的端口,你可以使用简单的 587 和 25

      【讨论】:

        猜你喜欢
        • 2019-05-15
        • 1970-01-01
        • 1970-01-01
        • 2013-08-22
        • 2016-04-20
        • 2014-10-07
        • 2022-08-14
        • 2014-01-21
        • 1970-01-01
        相关资源
        最近更新 更多