asp.net-mvc - ASP.NET MVC SMTP 不工作并在我单击提交按钮后返回错误值
问题描述
我尝试在 ASP.NET MVC 中使用 SMTP 发送电子邮件,并且每次该函数返回一个 false 值。你们能帮我解决问题吗?
我没有任何错误,但是一旦我单击带有某个值的提交按钮,就会client.Send(mailMessage)
返回错误值。
@using (Html.BeginForm("Contact", "Contact")) {
<div class="container">
<p style="background:red" class="text-center w-50 m-auto">@ViewBag.contact</p>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="row">
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
@Html.EditorFor(model => model.name, new { htmlAttributes = new { @class = "form-control mt-2", placeholder = "John Doe" } })
</div>
<div class="col-lg-6 col-md-6 col-sm-12 form-group">
@Html.EditorFor(model => model.email, new { htmlAttributes = new { @class = "form-control mt-2", placeholder = "doe@email.com" } })
</div>
</div>
<div class="form-group">
@Html.EditorFor(model => model.subject, new { htmlAttributes = new { @class = "form-control mt-5", placeholder = "Please drop your comment?" } })
</div>
<input style="margin-top: 50px" type="submit" value="Send" id="btnsubmit" class="btn btn-primary text-center" />
</div>
我的控制器看起来像这样:
[HttpPost]
public ActionResult Contact(Contact contact)
{
ViewBag.contact = null;
if (!ModelState.IsValid)
{
ViewBag.contact = "Something went wrong";
return View("Contact", contact);
}
ViewBag.message = null;
bool result = false;
result = SendEmail(contact.email, contact.name, contact.subject);
if (result == true)
{
return RedirectToAction("Index");
}
else
return View("Contact", contact);
}
public bool SendEmail(string toEmail, string subject, string body)
{
try
{
string senderEmail = System.Configuration.ConfigurationManager.AppSettings["SenderEmail"].ToString();
string senderPassword = System.Configuration.ConfigurationManager.AppSettings["SenderPassword"].ToString();
SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
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, body);
mailMessage.IsBodyHtml = true;
mailMessage.BodyEncoding = UTF8Encoding.UTF8;
client.Send(mailMessage);
ViewBag.contact = "Successfully sent";
return true;
}
catch(Exception e)
{
ViewBag.contact = "Unsuccessful, something was wrong";
return false;
}
}
你能帮我解决这个问题吗?
先感谢您。
解决方案
我想,您忘记了 gmail 配置中的第 3 方访问配置。
推荐阅读
- powershell - 使用 Powershell 使用其他 txt 文件中的模式在 txt 文件中查找匹配的字符串
- containers - 如何更改对 pod 中另一个容器的访问权限
- javascript - 拖动折线使端点消失
- java - 如何初始化 ObservableList?
- javascript - Office 插件中 Word 的自定义样式
- virtualenv - 如何重用使用 Pipenv 创建的虚拟环境
- spring-security - 如何使用 rsocket 和 JWT 进行身份验证?
- php - 致命错误:未捕获的错误:调用未定义的函数 createUser()
- css - 强制输入组完全可见并且不包含在表格单元格中
- python - 通过 AWS Lambda 函数连接 AWS Document DB 时出现 ServerSelectionTimeoutError