我的要求是:
- 从终端发送电子邮件(为了批处理)
- 将 pdf 文件附加到该电子邮件(除水印外,所有收件人的 pdf 文件均相同)
- 指定回复地址([电子邮件受保护])
我已经尝试过“通过 gmail 发送单行消息的最简单答案是使用 ssmtp”,以及几个变体,并不断获得:
笔记本电脑 sSMTP[19226]:授权失败 (535 5.7.8 https://support.google.com/mail/?p=BadCredentialsd13sm3920147qkj.27 - gsmtp)
谷歌设置:
- 已启用 IMAP
- 允许安全性较低的应用程序已开启
对于ssmtp.conf
我尝试的每个设置,我都完成了显示解锁验证码就在之前:
$echo "Testing...1...2...3" | ssmtp [email protected]
看着指定线程/etc/ssmtp/ssmtp.conf
仅就如何设置而言,尚未达成共识:
mailhub=smtp.gmail.com:587
VS 465UseTLS=YES
与UseSTARTTLS=Yes
(或两者?)hostname=localhost
与默认放置在那里的任何内容(在我的例子中,laptop
)
有人可以提出解决这个问题的建议,并可能完整粘贴一个工作conf文件吗?
有一项索赔2017 年的主题, 那:
您无法使用普通密码使用外部应用程序,您必须转至https://security.google.com/settings/security/apppasswords
是这样吗? (我做不到)
还有哪些替代方案?
附:
- 操作系统:Linux Mint 19 Tara
- ssmtp 在升级/更新之前的全新安装中进行了测试
- 几年前,我能够使用相同的操作系统(早期版本)发送电子邮件
- 为了确保 AuthPass 的值正确,我用它手动登录我的谷歌帐户。
答案1
使用以下 Google 设置:
IMAP enabled
Allow less secure apps is ON
解决方案是设置一个应用程序密码:
笔记: Google 的应用程序密码设置要求首先为您尝试为其配置 ssmtp 的帐户启用双因素身份验证。
/var/ssmtp/ssmtp.conf:
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=postmaster
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
# Modified 06/27/2020:
# mailhub=mail
[email protected]
[email protected]
#AuthPass=[usual gmail pwd] # aint' gonna work
AuthPass=[pwd generated by https://myaccount.google.com/apppasswords]
#UseTLS=YES
#mailhub=smtp.gmail.com:465
UseSTARTTLS=Yes
mailhub=smtp.gmail.com:587
# Where will the mail seem to come from?
#rewriteDomain=
# The full hostname
hostname=laptop
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
在终端上:
$echo "Testing...1...2...3" | ssmtp [email protected]
附:
- 我不认为在没有解释的情况下否决投票有什么用处。
- 对于问题(附件)中所述的第二个要求,
mutt
奇迹般有效。
更新于 12/01/2022
使用msmtp
并且因为不太安全的应用程序残疾人
# content of /home/user/.msmtprc
# do: `$ chmod 600 /home/user/.msmtprc`
# gmail
account [email protected]
host smtp.gmail.com
port 587
tls on
tls_starttls on
auth on
user google-name
from [email protected]
# https://myaccount.google.com/apppasswords
password xxxxxxxxxxxxxxxx
# default account
account default : [email protected]
$ chmod 600 /home/user/.msmtp
$ echo "Testing...1...2...3" | msmtp recipient.address@domain
这将发送给密件抄送,看这里的替代品。
答案2
答案3
Google 不再提供“允许不太安全的应用程序打开”选项。 2022 年 5 月之后,该选项将被删除。
选项应用密码除非您启用了两步验证,否则不可用。
添加应用程序 ssmtp 并生成令牌,然后将令牌粘贴到应用程序密码设置中。
复制令牌并用作您要集成的邮件应用程序的密码
下一步启用IMAP在 Gmail 上
注意:请务必在邮件客户端应用程序配置中选择 SSL/TLS 选项和 Not STARTTLS。
答案4
但问题是,如前所述,身份验证问题ssmtp
仍然可以解决。有一个解决方案这里。
以下是该解决方案的读者摘要版本:
在 Google 中使用/配置 appPassword
- 在您要链接的 Gmail 帐户上启用两因素身份验证(如果尚未启用)。
- 在 Google 帐户中,选择“安全”。选择“登录 Google”下的“应用程序密码”。
- 在这里为您的应用程序进行描述。我使用“Ubuntu 上的 ssmtp”。
- 生成 16 位应用程序密码。记下它!
- 单击完成。
现在在将发送电子邮件的计算机上执行 sudo nano/etc/ssmtp/ssmtp.conf
[email protected]
mailhub=smtp.gmail.com:587
FromLineOverride=YES
[email protected]
AuthPass=myAppPassword # Note this is the password generated by google
UseSTARTTLS=YES
UseTLS=YES
需要明确的是: AuthPass
应该是您新的 16 个字符的应用程序密码并且不是您的 Gmail 密码。
这在 Ubuntu 服务器 16.04 和 18.04 LTS 上对我有用