今天给大家介绍的是如何用Python代码自动发邮件。还是一个老问题,你整这个有什么用?

那用处可多了,比如我们昨天写的那个屏幕监控程序,也只能在事件发生的时候把事情用截屏记录下来。如果我们掌握了Python发邮件这个技能,就可以为我们的屏幕监控程序加上报警功能,一旦觉得不对劲,或者关键文件被移动被就修改或者被复制,就立马发送邮件到指定邮箱。可以是简单的文本报警,也可以把实时截图当做界面发过去,还可以调用摄像头把嫌疑人的视频截图发过去,只有你想不到的,没有Python做不到的。

Talk is Cheap,Show Me the Code。废话少说,放码过来。

还是老样子,首先我们要import一些这个程序所赖以生存的库。主要有两个,一个是smtplib,另一个就是email。前者用于连接SMTP服务器和发送邮件,后者主要用于构造邮件内容。

一般来说环境会自带,但是也保不齐,需要我们手动下载。你可以先试试,不行大不了就pip install呗。如果你想到这个了,只能说太naive了!

要注意了,这两个库有点特殊,你会发现用pip install是会报错甚至显示查无此人。对于stmplib,先尝试一下pip search smtplib,然后你会发现一堆相关的包,我选择了PyEmail,直接pip install PyEmail,但是代码里面还要继续import smtplib。

python自动收邮件并转发 如何用python自动发邮件_如何使用python自动发邮件

至于email库,pip install不好用的话,尝试一下easy_install email,其实这个easy_install就是pip的前身。

大环境好了,咱们就开始上代码吧

python自动收邮件并转发 如何用python自动发邮件_python自动收邮件并转发_02

先要设置一些基本的参数,比如用哪个邮箱,要发给谁,邮箱登录密码什么的。要注意,这里的password不是你实际中的邮箱登录密码,而是在邮箱设置中开启了smtp的授权码。这里我出于隐私考虑弄成了XXX,你们自己写程序是要有实际字符的。邮箱设置这边,图中的那些对号都是要确认勾上的,否则你会发现你的程序要么连不上主机,连上了也发不出邮件,发出去了那边也收不到。

python自动收邮件并转发 如何用python自动发邮件_发邮件_03

随后就是调用email库各种构建邮件内容了,我们先从最简单的开始,纯文本邮件。其中,msg是一个MIMEText的对象实例,大家按照预想的往里面填写标题内容和收件人发件人就可以了。

python自动收邮件并转发 如何用python自动发邮件_如何使用python自动发邮件_04

对于发送附件稍微麻烦一点,因为你的附件和正文其实是两回事。所以先要构建一个MIMEMultipart的对象,然后把包含正文的MIMEText对象和实际的附件都当做附件attach在一起。

剩下的就简单了,调用smtp先连上SMTP主机,我们这里是smpt.163.com,然后用sendmail函数把刚才构建的msg发出去,这是一份纯文本邮件,再把msgwithattach发出去。所以,这个程序执行完以后,我的收件箱里面应该有两份邮件才对,其中一封还是有附件的。

python自动收邮件并转发 如何用python自动发邮件_发邮件_05

还有一些情况我们需要考虑,就是有时候我们给别人发邮件,需要发送照片或者网址,这应该怎么实现呢?

其实和发送文本和附件大同小异,构建email库中某个对象,然后在需要的位置把该填写的填了,就可以了,时间有限精力有限,我就不再多说,留给大家自行尝试(其实是我自己懒得弄了)。