linux下通过mail发送邮件及遇到的问题

  • baagee 发布于 2017-12-19 11:17:46
  • 分类:Linux
  • 1541 人围观
  • 2 人喜欢

昨天做了定时从线上数据库导出订单的脚本,并且发送附件通知,也遇到了一些问题:

Linux服务器mail程序本身就是调用sendmail来进行邮件发送的,sendmail服务器提供对外的邮件发送功能。CentOS默认不能发送邮件,所以要安装sendmail

yum -y install sendmail

安装后service sendmail start启动

-f 表示发送者的邮箱

-t 表示接收者的邮箱

-cc 表示抄送发给谁

-bcc 表示暗抄送给谁

-o message-content-type=html   邮件内容的格式,html表示它是html格式

-o message-charset=utf8        邮件内容编码

-s 表示SMTP服务器的域名或者ip

-u 表示邮件的主题

-xu 表示SMTP验证的用户名

-xp 表示SMTP验证的密码(注意,这个密码貌似有限制,例如我用d!5neyland就不能被正确识别)

-m 邮件的内容

-a 要发送的附件

发送方式:

1:通过命令:

mail -s "test" liuhuidang@sf-express.com 回车输入邮件内容,ctrl+d确定发送,测试能否发送,但是发送失败了,查看/var/log/maillog

Dec 18 10:56:37 centos72 sendmail[76800]: vBI2ubXW076800: to=liuhuidang@sf-express.com, ctladdr=work (1000/1000), delay=00:00:00, xdelay=00:00:00, mailer=relay, pri=30218, relay=[127.0.0.1] [127.0.0.1], dsn=4.0.0, stat=Deferred: Connection refused by [127.0.0.1]

据此可以得出问题所在:连接被本地[127.0.0.1]拒绝,这就应该是本地的localhost出了问题,查看/etc/hosts,看到有这么一行:

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

删除它,然后重起sendmail:

service sendmail restart

再试一次,成功发送。

2:还可以通过管道写入邮件内容:

echo  '邮件正文内容' | mail -s "邮件主题" liuhuidang@sf-express.com

3:使用文件进行邮件发送

mail -s "test" liuhuidang@sf-express.com < /etc/test.txt

发送附件示例:

echo  '邮件正文内容' | mail -s "邮件主题" -a /home/work/odp_dlh/app/task/script/shops.csv liuhuidang@sf-express.com

使用sendmail -bp 或者 mailq 可以查看到邮件发送队列,里边会列出有几个邮件等待发送


标签: linux mail

评论

点击图片切换
还没有评论,快来抢沙发吧!