linux下发送邮件

基本知识整理:## 标题 ##

一封邮件的发送流程:
发件人:MUA – 发送 --> MTA -> 若干个MTA… -> MTA -> MDA <-- 收取 – MUA:收件人
MUA:Mail User Agent,邮件用户代理。用来收信和发信的,如:Outlook,Foxmail等。
MTA:Mail Transfer Agent,邮件传输代理。传递邮件。如:Sendmail和Postfix。
MDA:Mail Delivery Agent,邮件投递代理。邮件到达MDA后,就存放在邮箱,等用户再通过MUA将其取走。
MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议;
而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。
需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。

linux下邮件发送工具整理:
linux下用于发送邮件的命令很多,如:mail, sendmail, sendEmail, swaks, postfix,mutt等。
mail最为常见,功能较强,在内部调用sendmail发送邮件。但是它默认使用localhost作为邮件服务器,当需要发送邮件给外部邮箱时,需要进行较为繁琐的配置,要成功发送一封邮件出去真心不容易。例子:echo “This is message body”| mail -s “This is Subject” [email protected]

sendEmail与sendmail类似,但是它支持用命令参数指定通过外部SMTP服务器发送邮件,这样就可以省去本地主机上的配置工作,并且可以降低资源开销,即使是在不同主机之间切换工作,也很方便,因为只要外部SMTP服务器正常工作即可。我用了sendEmail之后就再也不想用sendmail和mail了…例子:sendEmail –f [email protected] –t [email protected] –s smtp.163.com –u “from nagios” –xu sender –xp 123456 –m happy

swaks被称作是SMTP服务器上的瑞士军刀,功能强大,灵活,可编程。它最大的特点是可以显示整个邮件的发送过程,包括邮件接收服务器的功能支持,两个服务器之间的每一步交互,非常适合用于调试邮件发送过程。例子:swaks -t "[email protected]" --header “Subject: Subject” --body “Email Text” --attach foo.tar.gz

postfix是基于IBM的GPL协议邮件传输代理,开发Postfix的本意是用来替代Sendmail,据说它的配置文件比Sendmail简单得多,配置相当容易,可以方便地用来架设自己的邮件服务器。
Mutt是类Unix系统上的一个文本界面邮件客户端。

综合比较linux下发送邮件的工具,sendEmail比较适合。因为可以直接借用公司的mail服务器,保证有效,还可以省去配置本地邮件服务器的诸多工作。
示例:

sendEmail -f "SenderName <$MAIL_USER$MAIL_SUFFIX>" \
	-t $person$MAIL_SUFFIX \
	-s $SMTP_SERVER -u "email subject" \
	-xu $MAIL_USER -xp $MAIL_PASSWORD \
	-m ${MAIL_CONTENT}

总结:

  1. 使用sendEmail程序发送邮件时, 可以使用 -f 参数指定发件人的名字, 如下:
    " -f “Jenkins <”+os.getenv(“MAIL_USER”)+os.getenv(“MAIL_SUFFIX”)+"> “”
  2. 可以通过sendEmail --help 查看所有支持的选项.

你可能感兴趣的:(项目管理)