Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MimeKit azure gmail->;身份验证失败_Azure_Asp.net Core_Azure Web App Service_Mimekit - Fatal编程技术网

MimeKit azure gmail->;身份验证失败

MimeKit azure gmail->;身份验证失败,azure,asp.net-core,azure-web-app-service,mimekit,Azure,Asp.net Core,Azure Web App Service,Mimekit,我在aspnet core上使用MimeKit,所有东西都在本地工作,但当我尝试在azure应用程序服务上发送电子邮件时,我收到“身份验证失败” 为了让它在本地工作,我必须启用“允许不太安全的应用” 这是我正在使用的代码: using (var client = new SmtpClient()) { await client.ConnectAsync("smtp.gmail.com", 465, SecureSocketOptions.S

我在aspnet core上使用MimeKit,所有东西都在本地工作,但当我尝试在azure应用程序服务上发送电子邮件时,我收到“身份验证失败”

为了让它在本地工作,我必须启用“允许不太安全的应用”

这是我正在使用的代码:

        using (var client = new SmtpClient())
        {
            await client.ConnectAsync("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
            await client.AuthenticateAsync(_emailOptions.Username, _emailOptions.Password);
            await client.SendAsync(emailMessage);
            await client.DisconnectAsync(true);
        }
我已将_emailOptions.Username和_emailOptions.Password记录在引发的异常中,以验证它们是否正确

        catch (Exception ex)
        {
            _log.LogError(new EventId(1), ex, "Username: '{0}', Password: '{1}'", _emailOptions.Username, _emailOptions.Password);
            throw;
        }

你知道如何解决这个问题吗?

我创建了一个使用MimeKit和MailKit电子邮件框架发送电子邮件的示例,如果我提供有效的用户名和密码并允许不太安全的应用程序访问gmail帐户(该帐户不使用两步验证),我发现该代码在本地和azure上运行良好


请确保您提供的帐户是否使用两步验证或不启用不太安全的应用程序来访问该帐户。此外,这是一种基于云的电子邮件服务,您可以试试。

谢谢您的指导。我对azure应用程序和gmail也有同样的问题。阅读本页后,我开启了两步验证,并生成了特定于应用程序的密码。这也解决了我的问题。

我想知道你是否在azure和本地应用程序上使用相同的用户名和密码。是的,我尝试硬编码用户名/密码。它在本地工作,但在azure中不工作。这很奇怪。我们的代码看起来是一样的,只是我使用的是异步版本。在启用双因素身份验证和生成特定于应用程序的密码后,我让它正常工作。我给你正确的答案,因为你的代码正在工作。
using (var client = new SmtpClient())
{
    MimeMessage mes = new MimeMessage();
    mes.From.Add(new MailboxAddress("xxx", "xxx@gmail.com"));
    mes.To.Add(new MailboxAddress("xxx", "xxx@hotmail.com"));
    mes.Subject = "hello";
    mes.Body = new TextPart("plain")
    {
        Text = @"hi,
        i'm azure! " + DateTime.Now.ToString()
    };

    client.Connect("smtp.gmail.com", 465, SecureSocketOptions.SslOnConnect);
    client.Authenticate("username here", "password here");
    client.Send(mes);
    client.Disconnect(true);
}