SMTP电子邮件发送问题,Azure中托管的ASP .Net mvc应用程序

时间:2016-12-19 07:05:06

标签: c# asp.net asp.net-mvc azure azure-web-sites

我是azure的新手。我的asp .net MVC应用程序托管在azure中。此应用程序具有电子邮件发送功当应用程序移动到azure时,电子邮件功能无效。我的错误日志显示如下错误:

System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.0 Must issue a STARTTLS command first. a65sm9218660oih.6 - gsmtp
   at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
   at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, MailAddress from, Boolean allowUnicode)
   at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, Boolean allowUnicode, SmtpFailedRecipientException& exception)
   at System.Net.Mail.SmtpClient.Send(MailMessage message)

用于发送电子邮件的代码块

SmtpClient client = new SmtpClient(GetStringValue(EMAIL_CLIENT), GetIntValue(EMAIL_PORT))
            {
                Credentials = new NetworkCredential(GetStringValue(EMAIL_USER_NAME),                            GetStringValue(EMAIL_PASSWORD)),
                EnableSsl = sslOn
            };

client.Host = SettingsManager.GetStringValue("EmailClient");//smtp.gmail.com
client.Port = SettingsManager.GetIntValue("EmailPort");//587
client.DeliveryMethod = SmtpDeliveryMethod.Network;

任何人都可以帮我解决这个问题。谢谢。

3 个答案:

答案 0 :(得分:3)

即使我遇到与gmail相同的问题。 Gmail会阻止来自azure的电子邮件,因为您的应用尝试从时区不同的位置登录,或者与您用于创建帐户的位置不同。检查您的Gmail收件箱,它将收到有关阻止登录尝试的电子邮件。

  

解决方案是从您的azure服务器登录gmail或   检查收件箱中阻止的电子邮件,并将该设备添加到已验证   设备。即选择“我将此活动视为我的活动”,如中所述   这link

答案 1 :(得分:2)

这是我们曾在Azure上托管过的应用程序中完全正常运行的代码。通过Gmail发送的电子邮件

MailMessage mail = new MailMessage();
mail.From = new MailAddress("Support@domain.com");
mail.Subject = "Subject";
mail.IsBodyHtml = true;
mail.To.Add(new MailAddress(email));
mail.Body = "Email body";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.Credentials = new System.Net.NetworkCredential("gmail-email-address", "gmail-password");
smtp.EnableSsl = true;
smtp.Send(mail);

答案 2 :(得分:0)

首先检查您的代码,端口,凭据,超时等问题......

var smtp = new SmtpClient
{               
    Host = "smtp.gmail.com",
    Port = 587,
    EnableSsl = true,
    DeliveryMethod = SmtpDeliveryMethod.Network,
    UseDefaultCredentials = false,
    Credentials = new NetworkCredential(fromAddress.Address, "yourApplicationSpecificPassword"),
    Timeout = 10000
};
using (var message = new MailMessage(fromAddress, toAddress)
{                
    IsBodyHtml = true,               
    Subject = subject,
    Body = body

})
{
    smtp.Send(message);
}

然后在gmail设置中,使用2步验证 - https://myaccount.google.com/u/3/signinoptions/two-step-verification

并生成app passwd - https://myaccount.google.com/u/3/apppasswords enter image description here

在代码“yourApplicationSpecificPassword”中使用生成的passwd

祝你好运!!

相关问题