Python 发送邮件脚本

在一些场景中经常需要发送邮件,像是持续集成和运维报警等.而使用Python脚本能够很快捷方便得实现发送各种邮件的需求.这里就通过Python基于SMTP(SimpleMailTransferProtocol)实现一套可以群发,Html内容和附件的脚本.

既然是要发送各种类型的邮件,首先需要有一个邮箱.这里就以腾讯企业邮箱为例.做完一下三个准备工作之后就可以开始写脚本了.

准备

  1. 在设置中开启所有SMTP相关服务.
  2. 记录发送邮件服务器地址,连接方式和端口
  3. 新增一个授权密码并记录起来.
  4. </ol

    连接邮件服务器并登陆

    </h4

    Python中有smtplib模块可供使用,将它导入进来.在发送邮件服务器地址信息那里可以看到连接有两种方式,一种是普通连接,一种是经过加密的连接.在脚本中就根据需求去构建两种不同的链接对象.通过邮件服务器地址这里的server_host也就是smtp.exmail.qq.com和默认的服务器端口(SMTP方式默认使用25端口而SMTP_SSL就是默认使用465端口,通常邮件服务器都是可以使用默认端口的)建立与邮件服务器之间的连接.并通过邮箱账户和上面第三步中设置的授权密码登录邮箱服务器.没有异常信息的话就连接邮件服务器并登录成功了.

    发送文本邮件

    </h4

    发送邮件之前先验证一下当前是否已经登录到邮件服务器.再通过email模块中的MIMEText构建出包含发件人,收件人列表,邮件标题和邮件内容的消息体.因为这里是发送文本内容的邮件,所以content_type是plain.

    构建完消息体之后就可以直接调用SMTP的sendmail方法,将消息体从发件方发送到收件列表中的收件邮箱中去.

    发送Html邮件

    </h4

    如果发送普通文本邮件成功了,那么想要发送html内容的邮件就很简单了,稍微改一下上面的代码给content_type多一种html的选择就可以了.通过外部的参数控制构建消息体是纯文件内容还是html内容.这样就可以使用一些html模板来发送固定格式的邮件.

    发送附件

    </h4

    首先从email模块中引入MIMEMultipart.从这个MIME扩展类的名字也可以看出它的作用是可以构建多个MIME的消息体,并将它们装配起来.继续修改前面的代码.根据发件人,收件人列表和邮箱标题构建出多MIME实例.

    接着根据参数决定构建纯文本还是Html内容的消息体,将该包含邮件内容的消息体装载进上面初始化过的multi_msg中.完成邮件内容部分的填充.

    完成代码改造之后就要加入对附件的支持,遍历外部传入的文件列表,并根据文件构建出包含附件的消息体,将其依次装载进multi_msg中.

    打开遍历文件列表时拿到附件,将其初始化为MIME消息体,并且设置附件的文件属性和附件的名字.

    汇总

    </h4

    功能代码完成之后再通过getopt构建出来外部参数指令,方便外部调用脚本.

    执行脚本

    收到群发带附件的邮件

    Issue

    </h4

    通常我们都是在公司使用自动发邮件脚本,肯定都会发送一些内容到企业邮箱.在向企业邮箱群发邮件的时候会出现企业退信的情况,返回一个代码和简单的描述代表这次发送失败.我在用163的邮箱给腾讯企业邮箱发送群发邮件时就出现过这个问题.这时可以参考一下退信代码说明,根据里面的说明fix问题.

    ————金三银四课程特惠————

    马哥教育精英线下Linux班郑州校区开班倒计时,优惠四重享,赠送高达4000元的学习大礼包:

    第一重:4月30日前报名,立减400元,名额有限抢完为止;

    第二重:4月30日前报名,赠送马哥教育内部Linux知识精讲教材一本(价值666元);

    第三重:4月30日前报名,赠送马哥教育实体服务器使用资格(价值1666元);

    第四重:4月30日前报名,赠送马哥教育云学堂学习权限1个(价值1999元);

本站所发布的一切资源仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如果侵犯你的利益,请发送邮箱到 [email protected],我们会很快的为您处理。
超哥软件库 » Python 发送邮件脚本