无法连接到受 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

一些事实:

代码(我用的是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