为 Gmail 启用两因素身份验证时发送电子邮件失败

Posted

技术标签:

【中文标题】为 Gmail 启用两因素身份验证时发送电子邮件失败【英文标题】:Sending email fails when two factor authentication is on for Gmail 【发布时间】:2014-12-31 09:32:04 【问题描述】:

我在我的网络应用程序中使用我的 Gmail 帐户和 smtp.gmail.com 来测试和发送电子邮件。当我的 Gmail 帐户启用两因素身份验证时,它无法发送电子邮件,但是当我将其关闭时,Web 应用程序会成功发送电子邮件。欣赏任何形式的建议。

【问题讨论】:

【参考方案1】:

如果您因为在 Mac OSX 上使用 ARQ 备份应用程序遇到问题而来到这里,我发现以下设置对我有用:

SMTP hostname: smtp.gmail.com
SMTP Port: 587
Click: Enable SSL (STARTTLS)
Authentication Type: Password (SASL PLAIN)
User Name: <full Gmail email address>
Password: <Google-generated app password>

Google 生成的应用密码是按照 @stoyan-dimov 在上面的回答中建议的那样生成的,使用以下 URL:

https://security.google.com/settings/security/apppasswords

选择生成“邮件”密码,并将设备设置为“自定义”(我称我的“ARQ”。)

警告:您必须在您的 Google 帐户上启用双重身份验证才能访问上述网址。

【讨论】:

【参考方案2】:

在您的 Gmail 安全设置中创建自定义应用。

1. Log-in into Gmail with your account
2. Navigate to https://security.google.com/settings/security/apppasswords
3. In 'select app' choose 'custom', give it an arbitrary name and press generate
4. It will give you 16 chars token.

将令牌作为密码与您的完整 Gmail 帐户结合使用,不需要两因素身份验证。

注意:第 2 步中的链接仅在您启用了 2-factor-authentication 时才有效。

【讨论】:

完美运行,应标记为解决方案。可悲的是,gmail 文档并不是那么简单。 有效。我在 Drupal 7 中使用带有这些 gmail 凭据的 SMTP 插件。 我应该在哪里使用我的令牌?用我的用户名或密码?能不能说的清楚一点? @Freedo 用户名不变,新的令牌应该用作密码 @Ze'ev 它的工作前提是密码在您的应用程序中是安全的。 (希望现在的手机允许它安全地存储应用程序数据。)但如果您知道密码已泄露,您至少可以撤销它而不会破坏其他应用程序的访问权限。

以上是关于为 Gmail 启用两因素身份验证时发送电子邮件失败的主要内容,如果未能解决你的问题,请参考以下文章

使用 Gmail 等 Spring Security 的两因素身份验证

如何通过 Gmail 使用 C# 发送电子邮件

MimeKit azure gmail -> 身份验证失败

无法在 codeigniter 中从 gmail 发送电子邮件,SMTP 身份验证错误

通过 Gmail API 发送电子邮件时应用 MSO 条件语句

将远程提交推送到 github 并启用两因素身份验证