Mac OS X 下用命令行发送邮件

原创
2013/12/22 19:13
阅读数 1.4W

msmtp 是个 smtp 客户端。如果只是用命令行发送邮件,并不需要能接受邮件,用它正好。用 Sendmail、Postfix 的话,就有些杀鸡用牛刀的感觉,而且它们配置起来真很让人痛苦。

安装 msmtp

$ brew install msmtp # 如果没有 brew,请去 http://brew.sh/ 安装下

配置

~/.mailrc

<!-- lang: shell -->
set sendmail=/usr/local/bin/msmtp

~/.msmtprc

<!-- lang: shell -->
# Use an external SMTP server with insecure authentication.
# (manually choose an insecure authentication method.)
# Note that the password contains blanks.

defaults

####################################################################
# A sample configuration using Gmail
####################################################################

# account name is "gmail".
# You can select this account by using "-a gmail" in your command line.
account gmail
host smtp.gmail.com
tls on
tls_certcheck off
port 587
auth login
from yourname@gmail.com
user yourname
password yourpassword

# If you don't use any "-a" parameter in your command line,
# the default account "gmail" will be used.
account default: gmail

~/.msmtprc 需要设置正确的访问权限

<!-- lang: shell -->
$ chmod 600 ~/.msmtprc

试用

<!-- lang: shell -->
$ echo "Hello world" | mail -s "msmtp test at `date`" yourfriend®@gmail.com

还想说的

上面的 ~/.msmtprc 使用明文存放密码、非加密方式验证,虽方便但不安全。想要更安全,可参看 Dropping sendmail-postfix for msmtp

如果想在 Linux、Windows 上做同样的事情,可参看How to send emails with msmtp on Windows or Linux or Mac OS X

文章还参考了

How to send an email from command line?

MSMPTQuickStart

Archlinux msmtp

展开阅读全文
打赏
3
2 收藏
分享
加载中
官网回答
Server sent empty reply
If you get a "server sent empty reply" error, this probably means the mail server doesn't support STARTTLS over port 587, but requires TLS over port 465.

To let msmtp use TLS over port 465, add the following line to ~/.msmtprc:

tls_starttls off
07/31 15:39
回复
举报
163邮箱,~/.msmtprc 中没加tls_starttls off 这一行一直不行,加上就行了
2017/06/11 10:45
回复
举报
更多评论
打赏
2 评论
2 收藏
3
分享
在线直播报名
返回顶部
顶部