c# - 尝试发送电子邮件时显示错误的联系我们页面(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
查看:
我收到这样的错误:
各位对此有什么建议吗?
谢谢
解决方案
好吧,我得到了你错误的确切原因。您正在创建
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 找不到sender
和receiver
信息并遇到您遇到的错误。此外,您应该添加以下权限:
您可以通过直接从此链接打开该选项卡来执行此操作
Less secure app access
。有关更多详细信息,您可以在这里查看
希望它能解决你的问题。
推荐阅读
- c# - 'ListViewItem' 不包含带 1 个参数的构造函数
- azure - 如何将 datalake gen1 数据集迁移到 azure 数据工厂中的 datalake gen2?
- r - 在 R 中使用 API 并转换为数据帧格式
- python - MemoryError 使用数字范围作为 dict 索引(低效)
- java - 如何使用 JSON 数据在 JavaFX TableView (Scene Builder) 上添加数据
- mysql - 我可以将多个 MySQL 列连接成一列吗?
- r - 查找数据中的所有循环
- javascript - 从 Node.js 获取 PHP 或 Javascript 响应
- vba - 将项目从个人日历移动到接收并自动接受邀请的团队日历?
- ruby - Mac OS Mojave 上的 Ruby 2.4:找不到图像...与 openssl.bundle 相关