好用的python开源邮件系统 python 电子邮件_Python

    前言

电子邮件服务是互联网应用最广的服务之一。通过互联网的电子邮件系统,用户能以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。

电子邮件可以是文字、图像、声音等多种形式。用户可以得到大量免费的新闻、专题邮件,还可以轻松的实现信息搜索。电子邮件的存在极大地方便了人与人之间的沟通与交流,促进了社会的发展。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,用来控制信件的中转方式。python的smtplib库提供了一种很方便的途径发送电子邮件,对smtp协议进行了简单的封装。

1

语法介绍

Python创建 SMTP 对象的语法:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明:

host:SMTP服务器的ip地址或域名,是可选参数。

port:SMTP服务使用的端口,默认情况下是25端口。

local_hostname:SMTP在本机上时,指定本机服务器地址为 localhost。

Python SMTP对象使用sendmail方法发送邮件的语法:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options]

参数说明:

from_addr:发件人的地址。

to_addrs:收件人的地址列表。

msg:邮件消息的正文。

2

纯文本邮件

Python发送纯文本邮件,仅需将发件人、收件人、主题及正文部分填写完整即可。

Python发送纯文本格式邮件的实例:

#!/usr/bin/python3import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = '123@163.com' # 发件人receiver = ['456@163.com', '789@163.com']  # 收件人message = MIMEText('python邮件', 'plain', 'utf-8') # 文本内容,文本格式,文本编码message['From'] = Header("主题,发件人", 'utf-8')message['To'] =  Header("主题,收件人", 'utf-8')message['Subject'] = Header('正文', 'utf-8')try:    smtpObj = smtplib.SMTP('localhost') # 实例化smtp对象    smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件    print ("邮件发送成功")except smtplib.SMTPException:    print ("无法发送邮件")

3

HTML邮件

格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中的邮件格式设置为html。需要注意的是邮件客户端对样式的支持有限,所以发送HTML格式的邮件要兼容很多种浏览器需要注意很多原则。

Python发送HTML格式邮件的实例:

#!/usr/bin/python3import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = '123@163.com' # 发件人receivers = ['456@163.com', '789@163.com']  # 收件人mail_msg = """

邮件内容


"""message = MIMEText('mail_msg', 'plain', 'utf-8') # 文本内容,文本格式,文本编码message['From'] = Header("主题,发件人", 'utf-8')message['To'] = Header("主题,收件人", 'utf-8')message['Subject'] = Header('正文', 'utf-8')try: smtpObj = smtplib.SMTP('localhost') # 实例化smtp对象 smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件 print ("邮件发送成功")except smtplib.SMTPException: print ("无法发送邮件")


4

附件邮件

纯文本邮件邮件就像是普通的信件,附件可以理解为在信封内包含的其他材料,用来为正文内容进行补充,电子表格、网页、数据库等是不能用文本形式的邮件来发送的,这些在邮件服务商提供的正文界面上是无法显示,所以要以附件的形式发送。

Python 发送带附件邮件的实例:

#!/usr/bin/python3import smtplibfrom email.mime.text import MIMETextfrom email.mime.multipart import MIMEMultipart # 引入内容扩展库from email.header import Headersender = '123@163.com' # 发件人receivers = ['456@163.com', '789@163.com']  # 收件人message = MIMEMultipart() # 创建带附件的实例message['From'] = Header("主题,发件人", 'utf-8')message['To'] =  Header("主题,收件人", 'utf-8')message['Subject'] = Header('正文', 'utf-8')message.attach(MIMEText('附件邮件', 'plain', 'utf-8')) # 正文内容att = MIMEText(open('附件.txt', 'rb').read(), 'base64', 'utf-8') # 构造附件att["Content-Type"] = 'application/octet-stream'att["Content-Disposition"] = 'attachment; filename="附件"'message.attach(att)try:    smtpObj = smtplib.SMTP('localhost') # 实例化smtp对象    smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件    print ("邮件发送成功")except smtplib.SMTPException:    print ("无法发送邮件")

Python发送邮件需要在邮箱开启相关服务

我们需要用Python登录smtp服务器,这样才能有发送权限,所以,我们需要去邮箱手动开启smtp服务,然后记住服务器授权码(授权码意思是,你可以不用我的网页邮箱或者邮箱app登录,你可以用邮箱账号+授权码在后台来获取邮箱服务器的内容) 



好用的python开源邮件系统 python 电子邮件_发送邮件_02

小结

最后我也查了一下,用python发邮件有啥子用呀?

1.可以和爬虫代码结合一下、譬如查12306、查携程机票时可以设置查询到自动发邮件提醒。

2.程序猿们可以利用Python发邮件监控程序的运行,譬如有bug报错了,赶紧发个邮件提醒你,回来公司加班!(所以真的会有人这样干嘛。。。)

3.写一个暖心的小程序,让Python自动在恶劣天气,提醒亲朋好友注意加衣服,在生日时发送生日祝福。。。。。。(虽然我也觉得这个没太大用)

用python实现自动群发邮件的文章链接:https://zhuanlan.zhihu.com/p/44286998

4.每天早上八点自动向QQ邮箱发送天气预报邮件。(这个我在知乎上面看到一个文章,大家可以跟着试一下,而且这个也比较实用)

本期作者:尹明慧