smtp(simple mail transfer protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。
python发送邮件比较简单,掌握两个自带库 smtplib、email 即可,smtplib 负责发送邮件,email 负责构造邮件(邮件内容,主题,收件人,抄送人等)。
python的smtplib提供了一种很方便的途径发送电子邮件。它对smtp协议进行了简单的封装。
mimetext用于电子邮件正文
mimemultipart用于电子邮件结构
mimeapplication用于在电子邮件中添加二进制数据(如文件附件)
mimeimage用于图片
import smtplibfrom email.mime.image import mimeimagefrom email.mime.text import mimetextfrom email.header import headerfrom email.mime.multipart import mimemultipartfrom email.mime.application import mimeapplication
1.发送邮件(可带附件)
下面是一个使用python中的smtplib库发送电子邮件的示例代码。
import smtplibfrom email.mime.text import mimetextfrom email.mime.multipart import mimemultipartfrom email.mime.application import mimeapplication# 设置发送邮件的信息sender_email = 'xxx@qq.com' # 发件人邮箱账号sender_password = 'xxx' # 发件人邮箱授权码receiver_email = 'xxx@qq.com' # 收件人邮箱账号subject = 'this is a test email by 数字icer' # 邮件的主题smtp_server = 'smtp.qq.com' #qq邮箱的smtp服务器smtp_port = 465 #qq邮箱的smtp服务器端口465def send_email(): ret=true try: #创建一个multipart的邮件对象 msg = mimemultipart() msg['from'] = sender_email msg['to'] = receiver_email msg['subject'] = subject #添加邮件正文 body = 'hello, this is a test email.' msg.attach(mimetext(body, 'plain')) # 添加附件# filename = 'attachment.pdf'# with open(filename, 'rb') as f:# attachment = mimeapplication(f.read(), _subtype='pdf')# attachment.add_header('content-disposition', 'attachment', filename=filename)# msg.attach(attachment)# # 发送邮件 with smtplib.smtp_ssl(smtp_server, smtp_port) as smtp: smtp.login(sender_email, sender_password) smtp.sendmail(sender_email, receiver_email, msg.as_string()) print(邮件发送成功) except exception as e: print(邮件发送失败:, e) send_email()
上面使用qq邮箱帐户发送邮件,也可以使用其他邮箱,需要定义邮箱的smtp服务器和端口。
对于qq邮箱,smtp服务器是smtp.qq.com,smtp端口是465。
生成授权码
在 邮箱设置-->账户
设置pop3/imap/smtp服务中
点击生成授权码,sender_password = 'xxx' 即为授权码,并不是你的qq邮箱密码;
授权码
定义发件人电子邮件地址、授权码和收件人电子邮件地址。
使用mimemultipart()创建一个多部分消息。使用msg['from']、msg['to']和msg['subject']向消息添加发件人、收件人和主题。
使用mimetext(body, 'plain')向消息添加邮件正文。
使用mimeapplication()向消息添加附件。
其中 mimetext 构造对象时,第一个参数是邮件正文;第二个参数是subtype,可以设置两种格式 'plain' 和 'html';‘plain’ 表示发送纯文本消息。
发送邮件(可带附件)
2.发送html格式的邮件
下面是发送html格式电子邮件的示例代码。
import smtplibfrom email.mime.text import mimetextfrom email.header import headerfrom email.mime.multipart import mimemultipartfrom email.mime.application import mimeapplication sender_email = 'xxx@qq.com' # 发件人邮箱账号sender_password = 'xxx' # 发件人邮箱授权码receiver_email = 'xxx@qq.com' # 收件人邮箱账号subject = 'this is a test email by 数字icer' # 邮件的主题smtp_server = 'smtp.qq.com' #qq邮箱的smtp服务器smtp_port = 465 #qq邮箱的smtp服务器端口465mail_msg = python 邮件发送测试...
这是一个链接
msg = mimetext(mail_msg, 'html', 'utf-8')msg['from'] = header(sender_email, 'utf-8')msg['to'] = header(receiver_email, 'utf-8')msg['subject'] = header(subject, 'utf-8') try: with smtplib.smtp_ssl(smtp_server, smtp_port) as smtp: smtp.login(sender_email, sender_password) smtp.sendmail(sender_email, receiver_email, msg.as_string()) print (邮件发送成功)except smtplib.smtpexception: print (error: 无法发送邮件)
email.header是python标准库中的一个模块,header类是一个用于处理电子邮件头部的工具,它可以处理中文等非ascii字符集,确保电子邮件头部可以正确显示和解析。
当在电子邮件头部中使用中文或其他非ascii字符时,需要对这些字符进行编码,以确保电子邮件头部可以被正确地显示和解析。header类可以将这些非ascii字符编码为合适的格式。
发送html格式的邮件
电池与数字负载
微信开启深度清理功能内测
英伟达推出72核手机芯片?实为72个GeFore GPU核心
仪表放大器AD8235/36的性能特点及应用范围
元器件价格不断上涨 国产手机相继宣布调价
如何用python发送接收邮件
室外温湿度传感器应用场景
制作FPC柔性线路板的10个步骤
iphone8什么时候上市?iphone8最新消息:home键消失,iphone8外观再曝光!
基于瞬时无功电流理论三相谐波提取的DSP实现
Pyramid 发现,在LTE时代,WiMax会在细分市场战
组态王和触摸屏与200Smart之间PN无线通讯
三星note7翻版重做,从头来过的note7你还会买吗?
PyTorch教程-4.3. 基本分类模型
语音识别芯片WTK6900H在小夜灯中的应用
天府七中建立数据驱动等资源共享分发平台
高振实密度提升锂硫电池体积和质量能量密度
UVLED点光源固化机的十大特性
微软Through 3D display虚拟桌面技术
电子膨胀阀和毛细管哪个好