linux系统下如何发送邮件
在使用linux服务器的过程中,我希望某个任务完成后,系统会自动发邮件告诉我。这就需要用到发送邮件的功能。
网络上搜索了一下,一般的linux系统都已经安装了邮件服务程序sendmail(但不一定是开启的状态),但这个程序很麻烦。我觉得它至少有两个问题:
- 配置比较复杂,至少我觉得很头大;
- 似乎是需要root权限的,而我只是一般用户。
1. sendEmail简介
sendEmail是由网友发布的Brandon Zehm <caspian@dotconf.net> 一个轻量级的邮件发送程序。由于这个程序是基于perl语言开发的,因此也就省去了很多配置安装的麻烦。几乎说只要下载下来,就可以使用了。了解更多,可以访问源地址:http://caspian.dotconf.net/menu/Software/SendEmail/
2. sendEmail下载安装
在线下载:wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz
- 官方下载地址:sendEmail-v1.56.tar.gz
- 百度云下载:sendEmail-v1.56.tar.gz
$ tar -zxvf sendEmail-v1.56.tar.gz $ cd sendEmail-v1.56 $ chmod +x sendEmail
可以看到其实并没有安装,只是解压后给程序设置了可执行的权限而已。
如果你希望在任何目录下都能够使用sendEmail程序,那么只需要添加到你的bin目录下就可以了。
$ cd ~/bin $ ln -s ~/src/sendEmail-v1.56/sendEmail ./
3. sendEmail参数
直接运行sendEmail就会显示帮助信息,下面简单介绍几个可能用到的参数。- -f 表示from,发件人地址
- -t 表示to,收件人地址
- -s mail服务器域名
- -u 主题
- -xu 用户名(@之前的部分)
- -xp 用户密码
- -m 纯文本信息
- -l 写入日志文件
- -o message-file=/root/.. 发送文件中的内容
- -a 发送附件 (-m,-o,-a可以同时使用)
4. sendEmail举例
我要以163作为发送邮箱,qq作为接收邮箱,具体使用如下。sendEmail -f "FROM_MAIL@163.com" -t "TO_MAIL@qq.com" -s "smtp.163.com" -xu "FROM_MAIL" -xp "YOUR_CODE" -u "YOUR_TITLE" -m "YOUR_MESSAGE" -a "YOUR_ATTACH"
你只需要将上面的邮箱、账号、密码啥的换成你自己的就可以了。发送成功后,就会显示类似如下的信息:
Apr 10 10:09:16 blog sendEmail[8861]: Email was sent successfully!
邮件发送出去几乎是即时的,命令刚执行,邮箱就收到邮件通知了。
最后,52souji.net网建议你发送邮箱选择163,因为我个人在使用qq时未能成功。看网上上说gmail也有些问题。