使用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作为smpt从mvc控制器传递电子邮件

请稍等。你正在使用你的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);