Linux下可以直接用mail命令发送邮件,但是发件人是user@servername,如果机器没有外网的dns,其他人就无法回复。此时,有一个可以使用网络免费邮箱服务的邮件发送程序就比较重要了。msmtp就是这样的一个程序。
#1、下载源码包
wget http://sourceforge.net/projects/msmtp/files/msmtp/1.4.31/msmtp-1.4.31.tar.bz2/download
#2、解压
tar -jxvf msmtp-1.4.31.tar.bz2 && cd msmtp-1.4.31
#build and install
./configure --prefix=/usr/local/msmtp && make && make install
#link to /usr/bin
ln -s /usr/local/msmtp/bin/msmtp /usr/bin/msmtp
#3、新建msmtp的配置文件
mkdir /usr/local/msmtp/etc && vim /usr/local/msmtp/etc/msmtprc
#4、输入如下内容
# Set default values for all following accounts.
defaultslogfile /var/log/msmtp/msmtp.log
# The SMTP server of the provider.account 163# SMTP邮件服务器地址
host smtp.163.com# 发送的邮件Email
from user@163.comauth login# 邮件服务器登录账号
user user@163.com# 邮件服务器登陆密码
password password# Set a default accountaccount default : 163
#############################################
#5、测试msmtp是否配置正确
msmtp test@163.comtest[ctrl+d] #6、安装配置mutt yum install -y mutt vim /etc/Muttrc #输入如下内容:
set sendmail='/usr/bin/msmtp' set use_from=yesset realname='YOURNAME' set from=user@163.comset envelope_from=yesauto_view text/htmlset charset='utf-8' set send_charset='utf-8' set locale ='zh_CN.UTF-8' set content_type = 'text/html\;charset=utf-8' set rfc2047_parameters=yes #6、配置完毕,测试一下吧!
echo "测试test"|mutt -s "test" receiver@163.com首先介绍一下mutt这个软件,它是一款基于文字界面的邮件客户端,非常小巧,但功能强大,可以用它来读写,回复保存和删除你的邮件,能在linux命令行模式下收发邮件附件。 我只讲它很小的一部分功能,因为我也是刚刚开始摸索这个软件。更多的用法请查阅官网:http://www.mutt.org 一、mutt的安装1 yum -y install sendmail 2 #需要安装sendmail并开启防火墙的25端口,如果你需要收邮件110端口也要开 3 yum -y install mutt 二、配置信息 关于配置信息,有一点需要说明的,网上很多教程都说,编辑/root/.muttrc以修改配置文件,我想说的是,我在安装完成之后, /root目录下并没有 .muttrc 这个隐藏文件,你可以从其它地方复制过来,或者自己新建一个文件。这里我是复制的。 你可以通过find命令找到Muttrc这个文件,命令如下 find / -name Muttrc ,然后通过命令 cp /etc/Muttrc /root/.muttrc 复制到 /root 下后更名为 .muttrc ,然后你就可以编辑配置文件了。1 #如果你收到的邮件乱码,设置以下信息 2 set charset="utf-8" 3 set rfc2047_parameters=yes 4 #如果你想自定义发件人信息,需要进行如下设置 5 set envelope_from=yes 6 set use_from=yes 7 set from=root@itdhz.com 8 set realname="itdhz" 安装完mutt后,在/usr/share/doc/mutt* 下有一份很好的手册,可以看一下。 三、邮件发送 语 法: mutt [-hnpRvxz][-a <文件> ][-b <地址> ][-c <地址> ][-f <邮件文 件> ][-F <配置文件> ][-H <邮件草稿> ][-i <文件> ][-m <类型> ] [-s <主题> ][邮件地址] 参 数: -a <文件> 在邮件中加上附加文件。 -b <地址> 指定密件副本的收信人地址。 -c <地址> 指定副本的收信人地址。 -f <邮件文件> 指定要载入的邮件文件。 -F <配置文件> 指定mutt程序的设置文件,而不读取预设的.muttrc文件。 -h 显示帮助。 -H <邮件草稿> 将指定的邮件草稿送出。 -i <文件> 将指定文件插入邮件内文中。 -m <类型> 指定预设的邮件信箱类型。 -n 不要去读取程序培植文件(/etc/Muttrc)。 -p 在mutt中编辑完邮件后,而不想将邮件立即送出,可将该邮件暂缓寄出。 -R 以只读的方式开启邮件文件。 -s <主题> 指定邮件的主题。 -v 显示mutt的版本信息以及当初编译此文件时所给予的参数。 -x 模拟mailx的编辑方式。 -z 与-f参数一并使用时,若邮件文件中没有邮件即不启动mutt。 四、举例 这里我用自己备份网站的一段代码举例加以说明1 mutt 408160341@qq.com -s "itdhz数据备份" -a /home/backup/itdhz.sql 主题> 类型> 文件> 邮件草稿> 配置文件> 邮件文件> 地址> 地址> 文件> 主题> 类型> 文件> 邮件草稿> 配置文件> 邮件文 件> 地址> 地址> 文件>
如果没有正文文件的话,就用echo直接把正文打出来就行了,如:
echo "this is content" | mutt -s "this is subject" -a /path/yourfile -c
如果有正文文件的话就用
cat /path/contentfile | mutt -s "this is subject" -a /path/yourfile -c
mutt是linux下一个强大的邮件客户端软件.
-s是主题
-a是附件
-c是抄送,多个抄送就是多个-c,如
cat /path/contentfile | mutt -s "this is subject" -a /path/yourfile -c -c -c
如果发送多个email,就直接列出来就行了,如
cat /path/contentfile | mutt -s "this is subject" -a /path/yourfile