SMTP 服务器在 mailkit 中意外断开连接

Posted

技术标签:

【中文标题】SMTP 服务器在 mailkit 中意外断开连接【英文标题】:The SMTP server has unexpectedly disconnected in mailkit 【发布时间】:2017-11-02 11:07:36 【问题描述】:

我正在使用 mailkit 在 Asp.net Core 中发送邮件 这是我的代码

var emailMessage = new MimeMessage();

                emailMessage.From.Add(new MailboxAddress("Gorrolo", "gorollobikes@gmail.com"));
                emailMessage.To.Add(new MailboxAddress("", email));
                emailMessage.Subject = subject;
                emailMessage.Body = new TextPart("html")  Text = message ;

                using (var client = new SmtpClient())
                
                    client.LocalDomain = "http://localhost:54850";
                    await client.ConnectAsync("smtp.gmail.com", 465, false);
                    client.Authenticate("Myemail", "Mypassword");
                    client.Send(emailMessage);
                    //await client.emailMessage(emailMessage).ConfigureAwait(false);
                    //await client.DisconnectAsync(true).ConfigureAwait(false);
                

在行中

await client.ConnectAsync("smtp.gmail.com", 465, false)

调试器播报如下错误 SMTP 服务器意外断开

请提出一些可能的解决方案

【问题讨论】:

您正在使用 SSL 端口 (465) 但您有 useSSL = false。尝试将其更改为 true。如果仍然失败,请保持 true 并移动到端口 587 (TLS) 不要设置LocalDomain。无论如何,它不应该是一个 URL,它应该是一个完全限定的域名。 【参考方案1】:

这就是 2021 年适合我的方法

void SendGmail(MimeMessage mm)

    mm.From.Add(new MailboxAddress("The Email Service", "user@email.com"));
    using SmtpClient client = new(new ProtocolLogger("smtp.log"));
    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
    client.Connect("smtp.gmail.com", 587, SecureSocketOptions.StartTls);
    client.Authenticate("user@email.com", "My$uperSecr3tPa55w0rd"); // app password
    client.Send(mm);
    client.Disconnect(true);

【讨论】:

以上是关于SMTP 服务器在 mailkit 中意外断开连接的主要内容,如果未能解决你的问题,请参考以下文章

使用 Mailkit 和 Mimekit 收集 SMTP 服务器

MQTT连接在iOS中意外关闭的可能原因是啥?

如何修复腻子中意外的服务器关闭连接

MailKit---获取邮件

愚公系列2023年02月 .NET CORE工具案例-使用MailKit使用SMTP协议进行邮件发送

使用 .NET core 2.2 中的 MailKit SMTP 客户端通过 Gmail SMTP 发送邮件对我不起作用