我是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;
任何人都可以帮我解决这个问题。谢谢。
答案 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
在代码“yourApplicationSpecificPassword”中使用生成的passwd
祝你好运!!