【问题标题】:Sending email with Javamail from a script without a password从没有密码的脚本使用 Javamail 发送电子邮件
【发布时间】:2018-01-05 04:08:59
【问题描述】:
我有一个运行 Java 程序的脚本,每晚运行一些测试。它需要使用 JavaMail 和 Google 应用程序帐户通过电子邮件发送测试结果。
如何使用 Gmail 进行身份验证(通过 JavaMail API),而不将密码存储在运行每晚测试的机器上?我可以获得某种有效的 Gmail 身份验证密钥,比如一个月吗?我不介意每个月刷新一次密钥,但又不想在测试机上保留密码。
Google 电子邮件帐户需要花钱,所以我不希望创建一个新帐户只是为了通过电子邮件发送测试结果。
【问题讨论】:
标签:
testing
gmail
jakarta-mail
【解决方案1】:
我自己没有尝试过,但您可以尝试使用 googlemail 的 MX 服务器发送邮件。目前这些是
~ $ host -t MX googlemail.com
googlemail.com mail is handled by 40 alt4.gmail-smtp-in.l.google.com.
googlemail.com mail is handled by 10 alt1.gmail-smtp-in.l.google.com.
googlemail.com mail is handled by 20 alt2.gmail-smtp-in.l.google.com.
googlemail.com mail is handled by 5 gmail-smtp-in.l.google.com.
googlemail.com mail is handled by 30 alt3.gmail-smtp-in.l.google.com.
这些是负责来自外部世界的入站邮件的服务器,它是普通的 SMTP,无需身份验证(但您可以尝试启动 TLS 以使传输更安全)。不过,可能有一些检查会阻止您将邮件传递到这些服务器(dyn-IP-checks、SFP 等),这就是可能失败的原因。
如果您不想发送到 Google 邮件地址,您可以尝试相同的方法,但将 Google 的 MX 服务器替换为负责您要发送到的邮件地址的服务器。只需将上述调用与不同的域一起使用,或者如果您的系统上没有该命令作为“mx 查找”的搜索结果之一。