如何使用命令行发送电子邮件?

如何使用命令行发送电子邮件?

以下是我所拥有的:

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 上工作

  1. 通过以下链接允许“安全性较低的应用”连接到您的 Gmail:

    https://myaccount.google.com/lesssecureapps?pli=1
    
  2. 运行以下命令:

    sudo update-ca-certificates
    sudo apt-get install msmtp-mta
    nano ~/.msmtprc
    
  3. 设置以下 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
    
  4. 配置邮件使用 msmtp:

    nano ~/.mailrc
    
  5. 粘贴此:

    set sendmail="/usr/bin/msmtp"
    
  6. 最后发送你的邮件(替换[电子邮件保护]):

    echo hello | mail -s test [email protected]
    
  7. 或者,您可以使用“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

相关内容