【问题标题】:Contact US Page showing errors when try to send email (ASP.Net Core MVC)尝试发送电子邮件时显示错误的联系我们页面(ASP.Net Core MVC)
【发布时间】:2021-09-02 14:19:34
【问题描述】:

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

这是 ContactFormModel:

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

    }

这是ContactUsController

ContactUs Controller

这是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 file

我收到这样的错误:

Can not send email and showing errors

你们有什么建议吗?

谢谢

【问题讨论】:

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


    【解决方案1】:

    嗯,我知道了你的错误的确切原因。你正在创造新的 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 打开该选项卡来执行此操作。更多详情可以have a look here

    希望它能解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-04
      • 2020-10-29
      相关资源
      最近更新 更多