微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

可以做些什么来防止此 MailKit SMTP 失败?

如何解决可以做些什么来防止此 MailKit SMTP 失败?

我在我的 WPF C# 应用程序中使用推荐的 MailKit.Net.Smtp 类,其中用户(客户端)通过单击按钮从专用 Gmail 发送日志文件和向专用 Gmail 发送日志文件。但是当我在朋友的电脑上尝试时,我得到了一个例外。 (我遇到 thisthis 问题,但就我而言,我不知道如何将它用于 C#)

我使用的代码

        using (var client = new SmtpClient())
        {
            try
            {
                
                client.SslProtocols = SslProtocols.Ssl3 | SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12;
                client.Connect("smtp.gmail.com",465,true);

                client.AuthenticationMechanisms.Remove("XOAUTH2");

                
                 client.Authenticate(login,password);
                 client.Send(message);

            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
                throw;
            }
            finally
            {
                client.disconnectAsync(true);
                client.dispose();
            }
           
        }

这是记录的异常:

Warning: 534: 5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt
5.7.14 M0QLqwGEsymkDwo_w1PdtomM64NjeHlfRTxHSCRLrHD4dWryXDkqTLottdXp3j_w0jh5x
5.7.14 23oVaJfk24KAG9mFqOrGF1US1WDZx2PRou0xeN9x9s3iRl9Ash2T54rY_wMpsVtw>
5.7.14 Please log in via your web browser and then try again.
5.7.14  Learn more at
5.7.14  https://support.google.com/mail/answer/78754 t17sm1641881ljt.1 - gsmtp: MailKit.Security.AuthenticationException: 534: 5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt
5.7.14 M0QLqwGEsymkDwo_w1PdtomM64NjeHlfRTxHSCRLrHD4dWryXDkqTLottdXp3j_w0jh5x
5.7.14 23oVaJfk24KAG9mFqOrGF1US1WDZx2PRou0xeN9x9s3iRl9Ash2T54rY_wMpsVtw>
5.7.14 Please log in via your web browser and then try again.
5.7.14  Learn more at
5.7.14  https://support.google.com/mail/answer/78754 t17sm1641881ljt.1 - gsmtp ---> MailKit.Net.Smtp.SmtpCommandException: 5.7.14 <https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt
5.7.14 M0QLqwGEsymkDwo_w1PdtomM64NjeHlfRTxHSCRLrHD4dWryXDkqTLottdXp3j_w0jh5x
5.7.14 23oVaJfk24KAG9mFqOrGF1US1WDZx2PRou0xeN9x9s3iRl9Ash2T54rY_wMpsVtw>
5.7.14 Please log in via your web browser and then try again.
5.7.14  Learn more at
5.7.14  https://support.google.com/mail/answer/78754 t17sm1641881ljt.1 - gsmtp
   --- End of inner exception stack trace ---
   at MailKit.Net.Smtp.SmtpClient.<AuthenticateAsync>d__87.MoveNext()
--- End of stack trace from prevIoUs location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at MailKit.Net.Smtp.SmtpClient.Authenticate(Encoding encoding,ICredentials credentials,CancellationToken cancellationToken)
   at MailKit.MailService.Authenticate(Encoding encoding,String userName,String password,CancellationToken cancellationToken)
   at Cont.MainWindow.SendEmailFromClient() 6/28/2021 9:40:27 PM

现在我的 WPF 应用程序可能在世界的另一个地方运行,我需要接收日志文件并修复此发送错误。我已经打开了“允许安全性较低的应用程序”并且能够从我的计算机接收电子邮件。但不知何故,这还不够。

解决方法

日志中来自服务器的错误消息准确地告诉您需要做什么。您需要从要连接到 SMTP 的机器(在本例中为您朋友的机器)登录 Google Mail。

这是 Google 的一项安全预防措施,在您首次通过网络浏览器登录之前,它不会让您通过 SMTP 服务器进行身份验证。

您或许可以通过使用特定于应用的密码来解决此问题。您可以在 Google Mail 设置中的某处为此目的生成应用专用密码。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。