使用gmail作为smpt从mvc控制器传递电子邮件
本文关键字:控制器 电子邮件 mvc gmail 作为 smpt 使用 | 更新日期: 2023-09-27 18:28:33
我正在尝试从asp.net mvc控制器发送电子邮件。smpt使用的Gmail帐户被配置为使用安全性较低,所以这不是问题所在。
但我没有收到任何错误消息,也没有任何异常,但它没有发送到我期望的电子邮件地址。
我正在使用代码
var text = "email body to deliver";
SendEmail("mydeliverEmailAddress@gmail.com", text);
public static bool SendEmail(string SentTo, string Text)
{
SmtpClient client = new SmtpClient();
client.Credentials = new NetworkCredential("myemail@gmail.com", "myGmailPass");
client.Port = 465;
client.Host = "smtp.gmail.com";
client.EnableSsl = true;
try
{
MailAddress
maFrom = new MailAddress("sender_email@domain.tld", "Sender's Name", Encoding.UTF8),
maTo = new MailAddress(SentTo, "Recipient's Name", Encoding.UTF8);
MailMessage mmsg = new MailMessage(maFrom.Address, maTo.Address);
mmsg.Body = "<html><body><h1>Some HTML Text for Test as BODY</h1></body></html>";
mmsg.IsBodyHtml = true;
mmsg.Subject = "Some Other Text as Subject";
mmsg.SubjectEncoding = Encoding.UTF8;
client.Send(mmsg);
}
catch (Exception ex)
{
}
return true;
}
请稍等。你正在使用你的gmail帐户:myemail@gmail.com
,并试图代表sender_email@domain.tld
发送电子邮件?
出于显而易见的原因,这永远不会奏效。因此,请确保您使用的电子邮件地址与您正在验证的电子邮件地址相同:
maFrom = new MailAddress("myemail@gmail.com", "Sender's Name", Encoding.UTF8),
您只能从通过身份验证的帐户发送电子邮件。当然,收件人的电子邮件可以是gmail可以发送到的任何地址。
您的代码有另一个问题。您在这里使用的是一个绞拧端口:
client.Port = 465;
gmail SMTP使用的正确端口如下:
client.Port = 587;
此外,您可能需要确保在您的gmail帐户中启用了不太安全的应用程序,否则您将无法使用.NET中的SmtpClient使用此SMTP发送电子邮件:https://www.google.com/settings/security/lesssecureapps?pli=1
但我没有收到任何错误消息,也没有任何异常,但它没有发送到我期望的电子邮件地址。
当你做了有史以来最糟糕的事情时,你预计会收到什么错误消息?您将代码封装在try/catch块中,而在catch
块中,您什么也没做。您刚刚消费了异常:
catch (Exception ex)
{
}
因此,如果你要捕捉到异常,请确保你对它做了一些有用的事情。例如,有用的事情可能是记录这个异常,并向用户发送一条错误消息,说发生了不好的事情,你无法发送电子邮件,你现在正在调查这个问题。
var smtpClient = new SmtpClient("YourSMTPServer", "SMTPServerPort"))
{
Credentials = new NetworkCredential("YourEmail",
"Password"),
EnableSsl = false
};
string fromEmail = "YourEmail";
var mailMessage = new MailMessage();
mailMessage.From = new MailAddress(fromEmail);
mailMessage.To.Add("Recipient's EMail");
mailMessage.Subject = "Test Mail";
mailMessage.Body = "This is test Mail";
mailMessage.IsBodyHtml = true;
smtpClient.Send(mailMessage);