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

Gmail SMTP XOAUTH2 错误:JWT 已过期

如何解决Gmail SMTP XOAUTH2 错误:JWT 已过期

昨天我创建了一个 ClientID 和 Client Secret(使用 this 指南)来验证桌面应用程序 (C#/.NET) 以从 Gmail 帐户发送电子邮件

我的验证和发送电子邮件方法如下所示:

public static async System.Threading.Tasks.Task<int> SendEmailOAuth2Async(string sFromMailAddress,string sClientID,string sClientSecret)
    {
        var credential = await GoogleWebAuthorizationbroker.AuthorizeAsync(
        new ClientSecrets
        {
            ClientId = sClientID,ClientSecret = sClientSecret
        },new[] { "email","profile","https://mail.google.com/" },"user",CancellationToken.None
        ) ;

        var jwtPayload = GoogleJsonWebSignature.ValidateAsync(credential.Token.IdToken).Result;
        var username = jwtPayload.Email;

        var mailMessage = new MimeMessage();
        mailMessage.From.Add(new MailBoxAddress("from name",sFromMailAddress));
        mailMessage.To.Add(new MailBoxAddress("to name","someone@outlook.com"));
        mailMessage.Subject = "Automated Mail with OAuth";
        mailMessage.Body = new TextPart("plain")
        {
            Text = "Hello"
        };



        using (var client = new SmtpClient())
        {
            client.Connect("smtp.gmail.com",587,SecureSocketoptions.StartTls);

            // use the access token
            var oauth2 = new SaslMechanismOAuth2(sFromMailAddress,credential.Token.Accesstoken);
            client.Authenticate(oauth2);

            client.Send(mailMessage);

            client.disconnect(true);
        }

        return 0;

    }

昨天,使用此方法发送电子邮件有效。今天,我得到一个

System.AggregateException: '发生一个或多个错误。 (JWT 有 已过期。)'

我是 OAuth 和令牌的新手。我该怎么做才能让它再次工作?

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