使用gmail作为smpt从mvc控制器传递电子邮件

时间:2015-12-31 12:44:01

标签: c# .net smtp email-integration

我正在尝试从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;
}

2 个答案:

答案 0 :(得分:1)

等一下。您正在使用您的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)
{    
}

因此,如果要捕获异常,请确保使用异常执行某些操作。例如,有用的东西可能是记录此异常并向用户发送错误消息,说发生了一些不好的事情,而且您无法发送电子邮件,而且您正在调查此问题。

答案 1 :(得分:0)

     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);