以下是我所拥有的:
cat UserReport.txt | mail -s "TestSubject" "[email protected]"
这是一个小文件,比图片小得多,所以它应该可以立即发送。但我什么也没收到。我安装了mailutils
,但可能安装不正确。
如何从 bash 脚本发送电子邮件?
答案1
首先,您需要安装并配置 Postfix 以在 Ubuntu 上使用 Gmail SMTP。
安装所有必要的软件包:
$ sudo apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules
如果您之前没有安装过 Postfix,Postfix 配置向导会询问您一些问题。只需选择您的服务器即可互联网网站对于 FQDN,使用类似mail.example.com
然后打开你的postfix 配置文件:
$ sudo -H gedit /etc/postfix/main.cf
并添加以下几行:
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
您可能已经注意到,我们还没有在上面几行中指定 Gmail 用户名和密码。它们将进入不同的文件。打开/创建:
$ sudo -H gedit /etc/postfix/sasl_passwd
并添加以下行:
[smtp.gmail.com]:587 [email protected]:PASSWORD
如果您想使用您的 Google App 域名,请替换@gmail.com和你的@域名.com。
修复权限并更新 postfix 配置以使用 sasl_passwd 文件:
$ sudo chmod 400 /etc/postfix/sasl_passwd
$ sudo postmap /etc/postfix/sasl_passwd
接下来,验证证书以避免出现错误。只需运行以下命令:
$ cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | sudo tee -a /etc/postfix/cacert.pem
最后,重新加载 postfix 配置以使更改生效:
$ sudo /etc/init.d/postfix reload
测试
检查邮件是否通过 Gmail SMTP 服务器发送
如果您已正确配置所有内容,以下命令应该会从您的服务器生成一封测试邮件到您的邮箱。
echo "Test mail from postfix" | mail -s "Test Postfix" [email protected]
为了进一步验证,如果上述命令发送的邮件确实是通过 Gmail 的 SMTP 服务器发送的,您可以登录 Gmail 帐户[电子邮件保护]使用密码并检查“发送邮件“文件夹。默认情况下,Gmail 始终保留通过其 Web 界面和 SMTP 服务器发送的邮件副本。这种日志记录是我们在邮件传递至关重要时经常使用 Gmail 的一个重要原因。
故障排除
错误:“SASL 身份验证失败;服务器 smtp.gmail.com”
您需要访问此页面来解锁验证码 https://www.google.com/accounts/DisplayUnlockCaptcha
解锁验证码后,您可以再次运行测试。
来源
您需要使用以下语法来
mail
发送mutt
电子邮件,请注意,如果您想通过mail
命令发送附件文件,则不支持,或者最好说我不能通过mail
命令发送附件文件,而是可以使用mutt
命令行,这非常有用。并且在mutt
命令中,您必须在电子邮件地址后输入附件参数。我测试了它并且工作正常。
您可以mutt
通过以下命令安装:
$ sudo apt-get install mutt
使用mail
mail -s "TestSubject" [email protected] -a "UserReport.txt" < MessageBody.txt
使用mutt
mutt -s "TestSubject" [email protected] -a "UserReport.txt" < MessageBody.txt
而UserReport.txt
是您的附件文件,MessageBody
是您电子邮件正文的文本/文件,TestSubject
是您的电子邮件主题。
-s
标志用于“主题”,-a
标志用于“附件文件”
答案2
多年后更新:在 Ubuntu 16 上工作
通过以下链接允许“安全性较低的应用”连接到您的 Gmail:
https://myaccount.google.com/lesssecureapps?pli=1
运行以下命令:
sudo update-ca-certificates sudo apt-get install msmtp-mta nano ~/.msmtprc
设置以下 msmtp 配置(替换[电子邮件保护]、你的用户名和你的密码):
account gmail auth on host smtp.gmail.com port 587 auth on tls on tls_trust_file /etc/ssl/certs/ca-certificates.crt from [email protected] user yourUsername password yourPassword account default : gmail
配置邮件使用 msmtp:
nano ~/.mailrc
粘贴此:
set sendmail="/usr/bin/msmtp"
最后发送你的邮件(替换[电子邮件保护]):
echo hello | mail -s test [email protected]
或者,您可以使用“mailx”轻松发送附件:
echo "mail body" | mailx -a /path/to/your/file.doc -s "mail subject" [email protected]
答案3
您的行可以以最短的方式看起来像这个小 shell 脚本:
#!/bin/bash
cat email.txt && sendmail [email protected] < /tmp/email.txt