【问题标题】:Send Email using SMTP via gmail通过 gmail 使用 SMTP 发送电子邮件
【发布时间】:2017-05-12 01:45:39
【问题描述】:

我正在使用 ASP.Net Core 并尝试使用来自 gmail 的 smtp 客户端发送电子邮件。有以下代码,但它不工作 也看到了下面的帖子,但它不起作用 http://dotnetthoughts.net/how-to-send-emails-from-aspnet-core/

它会引发以下错误

System.NotSupportedException:SMTP 服务器不支持身份验证

var emailMessage = new MimeMessage();
emailMessage.From.Add(new MailboxAddress("From Name", "fromEmail@gmail.com"));
emailMessage.To.Add(new MailboxAddress("To Name", "toEmail@gmail.com"));
emailMessage.Subject = subject;

var bodyBuilder = new BodyBuilder();
bodyBuilder.HtmlBody = message;
emailMessage.Body = bodyBuilder.ToMessageBody();

var client = new SmtpClient();
try
{
    await client.ConnectAsync("smtp.gmail.com", 25, SecureSocketOptions.None).ConfigureAwait(false);
    client.AuthenticationMechanisms.Remove("XOAUTH2");  
    await client.AuthenticateAsync("fromEmail@gmail.com", "fromPassword"); //error occurs here

    await client.SendAsync(emailMessage).ConfigureAwait(false);
    await client.DisconnectAsync(true);
    await client.DisconnectAsync(true).ConfigureAwait(false);
}
catch(Exception e)
{

}

【问题讨论】:

  • 当示例显示端口 587 时,您为什么使用端口 25?
  • @mason 点是正确的。我们可以在 gmail smtp 中使用 587 或 465 端口 ID!。我不知道你为什么用 25。

标签: c# email asp.net-core smtp


【解决方案1】:

NotSupportedException 被抛出是因为 GMail 不支持不使用 SSL/TLS 连接的身份验证,因为它只支持基于密码的非加密身份验证机制。

我建议这样连接:

client.ConnectAsync("smtp.gmail.com", 587, SecureSocketOptions.StartTls)

希望对您有所帮助。

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 2011-08-11
    • 2011-02-08
    • 2012-05-29
    • 2020-02-21
    • 1970-01-01
    • 2021-11-16
    • 2020-05-30
    • 2014-01-04
    相关资源
    最近更新 更多