扁平网站配色,博物馆建设网站的目的及功能,如何制作漂亮的微信公众号,腾讯社交广告平台发送普通邮件 SMTP#xff08;Simple Mail Transfer Protocol#xff09;是简单传输协议。
python中对SMTP进行了简单的封装#xff0c;可以发送纯文本邮件、HTML 邮件以及带附件的邮件。两个核心模块如下#xff1a;
email模块#xff1a;负责构建邮件
smtplib模块Simple Mail Transfer Protocol是简单传输协议。
python中对SMTP进行了简单的封装可以发送纯文本邮件、HTML 邮件以及带附件的邮件。两个核心模块如下
email模块负责构建邮件
smtplib模块负责发送邮件
常用方法与属性: 如果要使用qq邮箱发送的话需要在qq邮箱设置-账户里面开启POP3/SMTP服务 首次开启需要你用手机号发送短信照着做就好了做完之后会给你一个授权码记着这个授权码写代码需要用到忘记了也可以找回
接着编写代码发送普通邮件
import smtplib
from email.mime.text import MIMEText
from email.header import Headerdef send_email():# 设置要登录的邮箱smtp_obj smtplib.SMTP(smtp.qq.com)# 登录邮箱 这里需要填写你的qq邮箱地址和生成的授权码smtp_obj.login(xxxqq.com,spcdwgqkltjsbiah)# 编辑内容mail_text This is Email~ 您要的邮件来啦~~# plain 原生文本模式msg_body MIMEText(mail_text,plain,utf-8)# 设置从哪发送的msg_body[From] Header(xxx,utf-8) # 设置发送人msg_body[Subject] Header(测试Python自动邮件,utf-8) # 设置内容主题# 发送邮件 这里第一个邮箱填自己的第二个填收件人的邮箱地址smtp_obj.sendmail(398707160qq.com,hotelmail126.com,msg_body.as_string())if __name__ __main__:send_email()
发送HTML邮件 发送HTML邮件只需要把发送的内容换成html代码即可
import smtplib
from email.mime.text import MIMEText
from email.header import Headerdef send_email():# 设置要登录的邮箱smtp_obj smtplib.SMTP(smtp.qq.com)# 登录邮箱 这里需要填写你的qq邮箱地址和生成的授权码smtp_obj.login(xxxqq.com,spcdwgqkltjsbiah)# 编辑内容mail_text h1 stylecolor:red这是一个HTML邮件通知/h1p这个是邮件的内容/ppa hrefhttp://www.itbaizhan.cn这个是链接/a/p# plain 原生文本模式msg_body MIMEText(mail_text,plain,utf-8)# 设置从哪发送的msg_body[From] Header(xxx,utf-8) # 设置发送人msg_body[Subject] Header(测试Python自动邮件,utf-8) # 设置内容主题# 发送邮件 这里第一个邮箱填自己的第二个填收件人的邮箱地址smtp_obj.sendmail(398707160qq.com,hotelmail126.com,msg_body.as_string())if __name__ __main__:send_email()
发送附件邮件-smtplib
有时邮件的内容只靠文本是无法完全描述内容。这时就可以考虑发 送附件来携带内容。具体方法如下
设置登录服务器 、登录邮箱、增加附件 、设置请求头、 发送邮件 import smtplib
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.mime.multipart import MIMEMultipart
from email.header import Headerdef send_file_email():# 设置邮箱服务器stmp_obj smtplib.SMTP(smtp.qq.com)# 登录邮箱stmp_obj.login(xxxqq.com,spcdwgqkltjsbiah)# 设置邮件内容# 文本msg_txt MIMEText(这个带有附件的邮件,plain,utf-8)# 附件 打开你要发送的文件msg_file MIMEApplication(open(./base_data/backg.jpg,rb).read())msg_file.add_header(Content-Disposition,attachment,filenamebg.jpg)# 封装要发送的数据part MIMEMultipart()part.attach(msg_txt)part.attach(msg_file)# 设置邮件其它信息part[From] Header(xx,utf-8)part[Subject] Header(附件邮件,utf-8)# 发送邮件stmp_obj.sendmail(xxxqq.com,hotelmail126.com,part.as_string())if __name__ __main__:send_file_email()
批量发送邮件-smtplib
这里以发送工资条为例
工资数据如下 from email.header import Header
from email.mime.text import MIMEText
import smtplibfrom openpyxl import load_workbookdef send_many_mail():# 设置登录邮箱服务器smtp_obj smtplib.SMTP(smtp.qq.com)# 登录邮箱smtp_obj.login(xxxqq.com,spcdwgqkltjsbiah)# 打开excel文件wb load_workbook(./base_data/工资数据.xlsx,data_onlyTrue)# 激活工作簿sh wb.active# 读取数据-遍历for i,r in enumerate(sh.iter_rows()):if i ! 0:# 编辑内容msg_txt fh3您好:{r[1].value}/h3p请查收2030年12月工资条详情/ptable border1trtd工号/tdtd姓名/tdtd部门/tdtd基本工资/tdtd提成/tdtd加班工资/tdtd社保扣除/tdtd考勤扣除/tdtd应发工资/tdtd邮箱/td/trtrtd{r[0].value}/tdtd{r[1].value}/tdtd{r[2].value}/tdtd{r[3].value}/tdtd{r[4].value}/tdtd{r[5].value}/tdtd{r[6].value}/tdtd{r[7].value}/tdtd{r[8].value}/tdtd{r[9].value}/td/tr/tablemsg MIMEText(msg_txt,html,utf-8)# 设置邮件其他信息msg[From] Header(财务部,utf-8)msg[Subject] Header(工资条,utf-8)#发送邮件smtp_obj.sendmail(xxxqq.com,{r[9].value},msg.as_string())print(f{r[1].value} 工资条发送成功)
if __name__ __main__:send_many_mail()
发送邮件-zmail Zmail的优势
1 自动填充大多数导致服务端拒信的头信息From To LocalHost之类的)
2 将一个字典映射为email构造信件就像构造字典一样简单
3 自动寻找邮件服务商端口号地址自动选择合适的协议经过认证的
安装pip install zmail 发送的消息以字典发送,包含的key
subject 邮件主题
from 发送人
content_text 邮件内容-文本
content_html 邮件内容-HTML
attachments 邮件内容-附件可写多个
import zmail
def send_text():# 登录邮箱server zmail.server(xxxqq.com,spcdwgqkltjsbiah)# 编写内容info {from:笨笨的张小白,subject:测试zmail模块,content_text:这个是zmail邮件信息}# 发送邮件server.send_mail(hotelmail126.com,info)
def send_html():# 登录邮箱server zmail.server(xxxqq.com,spcdwgqkltjsbiah)# 编写内容info {from:笨笨的张小白,subject:测试zmail模块,content_html:h1这个是zmail邮件信息/h1}# 发送邮件server.send_mail(hotelmail126.com,info)
def send_file():# 登录邮箱server zmail.server(xxxqq.com,spcdwgqkltjsbiah)# 编写内容info {from:笨笨的张小白,subject:测试zmail模块,content_html:h1这个是zmail邮件信息/h1,attachments:[r.\base_data\backg.jpg]}# 发送邮件server.send_mail(hotelmail126.com,info)
def get_email():# 登录邮箱server zmail.server(xxxqq.com,tzteewnmyfqacbce)email server.get_latest()print(email.get(subject))print(email.get(from))print(email.get(content_html))print(email.get(content_text))if __name__ __main__:# send_text()# send_html()# send_file()get_email()