首页 > 解决方案 > 尝试发送电子邮件时显示错误的联系我们页面(ASP.Net Core MVC)

问题描述

此 ASP.NET Core MVC 代码不发送任何电子邮件。

这是 ContactFormModel:

    public class ContactFormModel
    {
        public string Email { get; set; }
        public string Name { get; set; }
        public string Message { get; set; }

    }

这是ContactUsController

联系我们控制器

这是SendMail课程:

namespace Alak_1.Models
{
    public class SendMail : IEmailSender
    {
        public async Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            using (MailMessage mailMessage = new MailMessage())
            {
                mailMessage.From = new MailAddress("");
                mailMessage.Subject = subject;
                mailMessage.Body = email + htmlMessage;
                mailMessage.IsBodyHtml = true;
                mailMessage.To.Add(new MailAddress(""));

                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;

                System.Net.NetworkCredential networkCred = new System.Net.NetworkCredential();
                networkCred.UserName = "";
                networkCred.Password = "";

                smtp.UseDefaultCredentials = true;
                smtp.Credentials = networkCred;
                smtp.Port = 587;

                await smtp.SendMailAsync(mailMessage);
            }
        }
    }
}

最后,ContactMail.cshtml查看:

.cshtml文件

我收到这样的错误:

无法发送电子邮件并显示错误

各位对此有什么建议吗?

谢谢

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

解决方案


好吧,我得到了你错误的确切原因。您正在创建MailAddress("")具有空值的新实例,而不是在此处传递电子邮件地址。您应该改为传递发件人和收件人电子邮件地址。

您应该修改您的代码,如下所示:

namespace Alak_1.Models
{
    public class SendMail : IEmailSender

    {
        public async Task SendEmailAsync(string email, string subject, string htmlMessage)
        {
            using (MailMessage mailMessage = new MailMessage())
            {
                mailMessage.From = new MailAddress(senderEmailAddess);
                mailMessage.Subject = subject;
                mailMessage.Body = email + htmlMessage;
                mailMessage.IsBodyHtml = true;
                mailMessage.To.Add(receiverEmailAddress);
                SmtpClient smtp = new SmtpClient();
                smtp.Host = "smtp.gmail.com";
                smtp.EnableSsl = true;
                System.Net.NetworkCredential networkCred = new System.Net.NetworkCredential(senderName, senderPass);
                networkCred.UserName = "";
                networkCred.Password = "";
                smtp.UseDefaultCredentials = true;
                smtp.Credentials = networkCred;
                smtp.Port = 587;
                await smtp.SendMailAsync(mailMessage);


            }
        }
    }
}

注意:您发送new MailAddress("");的是无效的空文件。因为 gmail smtp 找不到senderreceiver信息并遇到您遇到的错误。此外,您应该添加以下权限:

在此处输入图像描述

您可以通过直接从此链接打开该选项卡来执行此操作Less secure app access。有关更多详细信息,您可以在这里查看

希望它能解决你的问题。


推荐阅读