无法连接到受 2FA 保护的 Gmail SMTP
Can't connect to Gmail SMTP secured with 2FA
出于某种原因,我无法使用 Google SMTP 协议从我的应用程序发送电子邮件。我收到一条看起来像这样的消息:
1. Unhandled javax.mail.AuthenticationFailedException
534-5.7.14
<https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt0
534-5.7.14
joZVenRyJq1oMRdChfymgOOgcAmikBwqT-_rFkNsHtvsquevNauUwW34Ksg5n8kXxPTALF
534-5.7.14
SYbdpH4O4GEE2TXaQmHScXAY15r_00D-lmyVzoJs54ba6RrOYb-yVcFNpsZbxxonQckTgd
534-5.7.14
dxdnp69p7t3_xj5523el2LWvh_HPE2lKTgOr8yLkeXjrFKYhvJT1jRhb5-Sy3Rs3G7OjuS
534-5.7.14 GdcriEyrrStn9Re4Vq7U46c5f8SwM> Please log in via your
web browser and 534-5.7.14 then try again. 534-5.7.14 Learn more
at 534 5.7.14 https://support.google.com/mail/answer/78754
c12-v6sm1390727lji.59 - gsmtp
一些事实:
- Web 界面 (gmail.com) 工作正常;
- 我已启用 2FA;
- 我使用了新的应用程序密码;
- Gmail 设置中启用了 IMAP,我检查过了;
- 另一个具有 2FA 和应用程序密码的帐户在我的应用程序中工作正常。
- 两个帐户都在不同的 Google 自定义域中。它会以某种方式影响他们吗?
代码(我用的是Clojure):
(def cred {:host "imap.gmail.com"
:user "user@my_domain.net"
:pass "application_password"
:ssl true})
(send-message cred {:from "test@test.com"
:to "bar@test.me"
:subject "hello"
:body "test"})
UPD:我也尝试按照响应中的 link 进行操作。它提示我进行 2FA,然后将我重定向到我的帐户设置。发送邮件还是不行。
经过 8 小时的尝试,我在 Google 应用程序中找到了一个选项。转到安全 -> 高级 -> 检查 "Allow users to manage their security settings"(已禁用)。现在可以用了,天哪。
不确定 Ivan 提供的答案指的是哪个选项。它们没有出现在我的非 gapps 帐户中,可能是由于 UI 更新。
配置为使用 Gmail SMTP 发送警报电子邮件的 nas cage 也遇到了类似的问题。一旦我在 Gmail 帐户上启用 2FA,电子邮件就会失败。
解决方案是在 google 帐户安全选项卡下创建一个 'App Password'。本质上,这些密码是为不支持 2FA 的 programs/devices 基于每个应用程序创建的。创建密码后,您可以使用它代替该特定应用程序的原始 Gmail 密码。这是直接 link 到 Google Security App Password Page
出于某种原因,我无法使用 Google SMTP 协议从我的应用程序发送电子邮件。我收到一条看起来像这样的消息:
1. Unhandled javax.mail.AuthenticationFailedException
534-5.7.14
<https://accounts.google.com/signin/continue?sarp=1&scc=1&plt=AKgnsbt0
534-5.7.14
joZVenRyJq1oMRdChfymgOOgcAmikBwqT-_rFkNsHtvsquevNauUwW34Ksg5n8kXxPTALF
534-5.7.14
SYbdpH4O4GEE2TXaQmHScXAY15r_00D-lmyVzoJs54ba6RrOYb-yVcFNpsZbxxonQckTgd
534-5.7.14
dxdnp69p7t3_xj5523el2LWvh_HPE2lKTgOr8yLkeXjrFKYhvJT1jRhb5-Sy3Rs3G7OjuS
534-5.7.14 GdcriEyrrStn9Re4Vq7U46c5f8SwM> Please log in via your
web browser and 534-5.7.14 then try again. 534-5.7.14 Learn more
at 534 5.7.14 https://support.google.com/mail/answer/78754
c12-v6sm1390727lji.59 - gsmtp
一些事实:
- Web 界面 (gmail.com) 工作正常;
- 我已启用 2FA;
- 我使用了新的应用程序密码;
- Gmail 设置中启用了 IMAP,我检查过了;
- 另一个具有 2FA 和应用程序密码的帐户在我的应用程序中工作正常。
- 两个帐户都在不同的 Google 自定义域中。它会以某种方式影响他们吗?
代码(我用的是Clojure):
(def cred {:host "imap.gmail.com"
:user "user@my_domain.net"
:pass "application_password"
:ssl true})
(send-message cred {:from "test@test.com"
:to "bar@test.me"
:subject "hello"
:body "test"})
UPD:我也尝试按照响应中的 link 进行操作。它提示我进行 2FA,然后将我重定向到我的帐户设置。发送邮件还是不行。
经过 8 小时的尝试,我在 Google 应用程序中找到了一个选项。转到安全 -> 高级 -> 检查 "Allow users to manage their security settings"(已禁用)。现在可以用了,天哪。
不确定 Ivan 提供的答案指的是哪个选项。它们没有出现在我的非 gapps 帐户中,可能是由于 UI 更新。
配置为使用 Gmail SMTP 发送警报电子邮件的 nas cage 也遇到了类似的问题。一旦我在 Gmail 帐户上启用 2FA,电子邮件就会失败。
解决方案是在 google 帐户安全选项卡下创建一个 'App Password'。本质上,这些密码是为不支持 2FA 的 programs/devices 基于每个应用程序创建的。创建密码后,您可以使用它代替该特定应用程序的原始 Gmail 密码。这是直接 link 到 Google Security App Password Page