我正在尝试发送通知电子邮件,以ASP的用户。. NET Core 5.0 razor.
我不明白我做错了什么,所以我不能发送电子邮件?
这是我到目前为止所做的:
<form method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group" >
<input asp-for="SendEmail.AdminEmail" class="form-control" value="@User.Identity.Name" readonly/>
<span asp-validation-for="SendEmail.AdminEmail" class="text-danger"></span>
</div>
<div class="form-group">
<input asp-for="SendEmail.ClientsEmail" class="form-control" value="test@mail.com" />
<span asp-validation-for="SendEmail.ClientsEmail" class="text-danger"></span>
</div>
<div class="form-group">
<input asp-for="SendEmail.Subject" class="form-control" placeholder="Subject"/>
<span asp-validation-for="SendEmail.Subject" class="text-danger"></span>
</div>
<div class="form-group">
<textarea asp-for="SendEmail.BodyText" class="form-control" style="min-height:50vh;max-height:50vh;" ></textarea>
<span asp-validation-for="SendEmail.BodyText" class="text-danger"></span>
</div>
<div class="form-group" style="text-align:center;">
<button class="btn btn-sm btn-outline-info font-weight-bold" style="font-size: 110%;float:unset;min-width:100px;">
Send
</button>
</div>
</form>
和后端代码:
public ActionResult OnPostAsync()
{
MailMessage msg = new MailMessage();
msg.From = new MailAddress("admin@mymail.com");
msg.To.Add(new MailAddress("test@mymail.com"));
msg.Subject = SendEmail.Subject;
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com", Convert.ToInt32(587));
System.Net.NetworkCredential credentials = new System.Net.NetworkCredential("admin@mymail.com", "******");
smtpClient.Credentials = credentials;
smtpClient.EnableSsl = true;
smtpClient.Send(msg);
return RedirectToPage("./Index");
}
这是我得到的错误:
处理请求时发生未处理的异常。ExtendedSocketException:试图以其访问权限禁止的方式访问套接字。[::飞行符:142.250.145.108]:587
System.Net.Sockets.Socket。DoConnect(EndPoint endPointSnapshot, SocketAddress SocketAddress)
SmtpException: Failure sending mail.System.Net.Mail.SmtpClient。发送(MailMessage消息)
可能与gmail设置有关。不确定,但要使用smtp,您需要启用一些设置,如"允许不太安全的应用程序";等。
也从地址必须是一个gmail地址AFAIK
你可以检查这个答案:试图以其访问权限所禁止的方式访问套接字。为什么?