在Linux服务器维护的时候,发送邮件有时很有必要,当检测到服务、程序有问题时,可以及时发送邮件通知您处理,当然可以自己写个程序来发送,mailx已经很强大。

安装 mailx

# ubuntu/debian
$ sudo apt-get install heirloom-mailx

# fedora/centos
$ sudo yum install mailx

1. 简单的邮件

$ mail -s "This is the subject" someone@example.com
Hi someone
How are you
I am fine
Bye
EOT

输入第一行命令,回车之后就可以输入邮件的内容了,完成输入内容后按 CTRL+D ,mailx 就会显示出 EOT。

2. 使用文件中的取邮件内容

$ mail -s "This is Subject" someone@example.com < /path/to/file

或者可以使用 echo

$ echo "This is message body" | mail -s "This is Subject" someone@example.com

3. 多个收件人

多个收件人,收件地址只需要用逗号“,”隔开即可。

$ echo "This is message body" | mail -s "This is Subject" someone@example.com,someone2@example.com

4. 抄送和密送CC,BCC

用 -c 表示抄送,-b 表示密送

$ echo "This is message body" | mail -s "This is Subject" -c ccuser@example.com someone@example.com

5. 定义发件人信息

使用 -r 定义发件人

$ echo "This is message body" | mail -s "This is Subject" -r "Harry<harry@gmail.com>" someone@example.com

6. 使用特殊的回复地址

# 回复地址
$ echo "This is message" | mail -s "Testing replyto" -S replyto="mark@gmail.com" someone@example.com

# 回复地址和名称
$ echo "This is message" | mail -s "Testing replyto" -S replyto="Mark<mark@gmail.com>" someone@example.com

7. 发送附件

使用 "-a" 加上文件路径即可

$ echo "This is message body" | mail -s "This is Subject" -r "Harry<harry@gmail.com>" -a /path/to/file someone@example.com

8. 使用外部的SMTP服务器

使用外部的SMTP服务器,这样就可以不用自己架设邮件服务器了。

$ echo "This is the message body and contains the message" | mailx -v -r "someone@example.com" -s "This is the subject" -S smtp="mail.example.com:587" -S smtp-use-starttls -S smtp-auth=login -S smtp-auth-user="someone@example.com" -S smtp-auth-password="abc123" -S ssl-verify=ignore yourfriend@gmail.com

或者使用换行的形式,可读性更强

$ echo "This is the message body and contains the message" | mailx -v \
> -r "someone@example.com" \
> -s "This is the subject" \
> -S smtp="mail.example.com:587" \
> -S smtp-use-starttls \
> -S smtp-auth=login \
> -S smtp-auth-user="someone@example.com" \
> -S smtp-auth-password="abc123" \
> -S ssl-verify=ignore \
> yourfriend@gmail.com