Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.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
asp.net mvc中通过smtp和ajax发送电子邮件_Ajax_Asp.net Mvc_Smtpclient - Fatal编程技术网

asp.net mvc中通过smtp和ajax发送电子邮件

asp.net mvc中通过smtp和ajax发送电子邮件,ajax,asp.net-mvc,smtpclient,Ajax,Asp.net Mvc,Smtpclient,我是ASP.netmvc的初学者,尝试在webApplication中使用smtp服务器和ajax获取电子邮件。当用户单击按钮时,我的代码将生成电子邮件,并发送到所需的ID。通过调试代码,我成功地获得了我的所有值。但是,我无法在那里收到电子邮件。尽管如此,我也从浏览器中获得了成功信息。但在我理想的账户中没有电子邮件 Index.cshtml <div> <a class="btn btn-primary btn-block btn-lg" onclick="SendEm

我是
ASP.netmvc
的初学者,尝试在webApplication中使用
smtp服务器和
ajax
获取电子邮件。当用户单击按钮时,我的代码将生成电子邮件,并发送到所需的ID。通过调试代码,我成功地获得了我的所有值。但是,我无法在那里收到电子邮件。尽管如此,我也从浏览器中获得了成功信息。但在我理想的账户中没有电子邮件

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>

单击以发送电子邮件
var sendmail=函数(){
$.ajax({
类型:“Post”,
url:“/Feedbacks/SendMailToUser”,
成功:功能(数据){
警惕(“成功”);
}
})
}
反馈控制器.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;
            }

        }
    }
public JsonResult SendMailToUser(){
布尔结果=假;
结果=发送电子邮件(“abc@gmail.com“,”测试“,”嗨,abc,
这条消息是为了测试。所以不要难过。
问候,
abc

”; 返回Json(结果,JsonRequestBehavior.AllowGet); } public bool sendmail(字符串到邮件、字符串主题、字符串emailBody){ 尝试 { 字符串senderEmail=System.Configuration.ConfigurationManager.AppSettings[“senderEmail”].ToString(); 字符串senderPassword=System.Configuration.ConfigurationManager.AppSettings[“senderPassword”].ToString(); SmtpClient=新的SmtpClient(“smtp.gmail.com”,578); client.enablesl=true; client.Timeout=100000; client.DeliveryMethod=SmtpDeliveryMethod.Network; client.UseDefaultCredentials=false; client.Credentials=新的网络凭据(senderEmail、senderPassword); MailMessage MailMessage=新邮件(senderEmail、toEmail、subject、emailBody); mailMessage.IsBodyHtml=true; mailMessage.BodyEncoding=UTF8Encoding.UTF8; client.Send(mailMessage); 返回true; } 捕获(例外情况除外){ 返回false; } } }
Web.config

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

尝试在不使用对象初始值设定项的情况下使用
SmtpClient

SmtpClient client = new SmtpClient();

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

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

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

我收到了电子邮件。

您插入了错误的端口,您可以使用simple 587和simple 25

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