您的位置:首页 > 运维架构 > Shell

使用SMTP发送邮件的两种方式(SHELL+PYTHON)实测有效

2019-05-26 19:58 429 查看
最近需要写一个发送预警邮件脚本,所以研究了一下,希望对此感兴趣的同学有所帮助。
我主要研究了两种实现邮件发送方式:Linux  和Python.  原因是如果用linux发送多封邮件,只能一个一个发。下面我们来看一下两种方式是如何实
4000
现的:

第一种 Linux实现邮件发送
其实linux发送邮件也包括两种方式:linux自带的mailsendmail方式,这里只讨论第一种,原因有二:一是操作简单,二是不容易发送失败(sendmail默认配置好像是使用服务器ip发送,这样一般会被邮件接收方视为垃圾邮件给拒绝掉,当然也可以配成第三方邮件发送,但我配置失败啦,😓),所以为了不误导大家,这里只会讲第一种。
不说了,直接上干货:
第一步:检查服务器是否安装 mailx:
命令:rpm -qa | grep mailx

第二步:如果没安装,可以使用yum,apt-get 或其它服务器的安装命令安装mailx(如果安装了,跳过这一步)
命令:yum install -y mailx

第三步: 修改配置文件(/etc/mail.rc)
这一步需要使用root权限,所以是公司服务器,就需要运维部门给你配置了,配置内容如下:

简单介绍下各配置参数:
from: 来自哪里,即发件人名称。
smtp:第三方发送邮件的smtp服务器地址
smtp-auth-user:即第三方发送邮件的用户名
smtp-auth-password: 即第三方发送邮件的用户名密码
smtp-auth:SMTP的认证方式,默认是login,也可以是CRAM-MD5或者plain。
注:上图中的user和password,大家可以改成自己的邮箱账号和密码,还有本次测试的163账号,关于其他第三方邮箱配置可参考下方链接地址:https://www.cnblogs.com/larrysunday/articles/1152532.html
第四步:发送邮件测试
命令:mail -s 邮件标题 接收方邮箱

第五步:检查是否收到邮件:

第六步:带附件
一般来说,发送邮件都会带附件,那怎么带附件呢?很简单
命令: mail -s “邮件主题” 收件人邮箱 < 邮件附件 (懂linux命令的应该对"<"符号不陌生)
现在linux发送邮件的方式已经介绍完了,但不知道大家有没有一点疑问,如果要一次发送多个人怎么办? 而且如果是公司服务器,我还要告诉运维我的邮箱账号和密码,心里是不是总感觉不爽。接下来,我们使用python来解决这两个问题:

使用Python实现邮件发送
首先说明下:我用的python2的版本,因为公司服务器自带python2,所以为了避免找运维的麻烦,就用python2了。
不说废话,直接上货:
第一步:确认相关包是否安装

使用python发送邮件需要确认安装包smtplib 和email是否有,没有的话,使用python的pip安装命令安装
第二步:配置smtp服务

这一步,把smtp,账号,和密码配置下就可以了
第三步:定义发送方,接收方,邮件主题,from,to,正文等内容

注意:因为接收方是一个列表,所以可以写多个接收方,还有就是from和to必须写,否则会报554错误
第四步:设置发送

全部代码如下:

python带附件
关于附件发送也很简单,在此不再赘述,贴出代码,大家可以自己测试下:下图只发送一个附件,大家可以多写几个附件发送

总结
通过对比以上两种邮件发送方式,可以发现:linux的mail方式确实很简单,但收件方一次只能发送一个,而且账号和密码容易暴露;而使用python发送邮件,则可以避免以上两个问题,而且python的email包方法很多,也更加灵活。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: