前一段时间慢悠悠的写毕设,一直在偷懒没有写博客了。现在是该还债的时候了。
本文主要内容是使用Python来自动发送邮件。
准备邮件服务器
邮件服务器没有必要自己去做,因为搭建起来太复杂,发送的邮件还容易被其他的邮件商识别为垃圾邮件。因此推荐使用主流的邮件服务商的产品。如果要求不高的话,也可以使用自己平时用的邮箱来测试。
本文使用的是阿里云的邮件服务,好处是可以自定义自己的邮箱地址,比如我的就设置为no-reply@notice.mrliao.cn
,绑定在自己的域名上。
确定好要使用的邮件服务器后,还要查一下这个服务器的邮件服务端口是多少,一般的端口都是25
,但是也有不同。
因此开始之前,需要确定你已经有以下信息(我的为例):
发送简单邮件
Python发送邮件需要使用两个自带的模块:email
、smtplib
。直接上代码:
|
|
一共就三个步骤,登录服务器、创建邮件、发送邮件。代码中的set_debuglevel(1)
是开启调试的意思,开启调试的时候哦会打印所有服务器返回的信息。
发送HTML邮件
发送HTML邮件的步骤和上面一样,不过在构造邮件的时候需要改一下,即是把文本类型由plain
改为html
|
|
这里可以使用行内式和嵌入式的css
布局,但不要使用外部引用的css
,否则会因安全性问题屏蔽。而且需要注意的是,邮件里面尽量不要引用用外部资源,比如图片等等,大多会被拦截掉。如果需要加入图片,前看下一节。
添加附件
如果要添加附件,只需要用不同的方法来构造邮件,其余发送部分相同:
|
|
如果要添加图片到正文中,可以直接使用下面的引用方法,这里的cid
的值是上面添加附件中的X-Attachment-Id
的值,因此如果要使用多张图片的话,就依次编写不同的值并引用就可以了。
群发邮件
Python对群发邮件的支持也很好。以群发简单邮件为例:
|
|
首先生成一个收件人地址列表;然后在构造邮件的收件人信息时,要把列表合并为一个用,
分隔的字符串,注意这里必须且只能用英文逗号分隔;最后把列表传入sendmail
函数中发送邮件。
More info: Python Send Email