使用Python自动发送邮件
发送普通邮件
SMTP(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('xxx@qq.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('398707160@qq.com','hotelmail@126.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('xxx@qq.com','spcdwgqkltjsbiah')# 编辑内容mail_text = '''<h1 style='color:red'>这是一个HTML邮件通知</h1><p>这个是邮件的内容</p><p><a href='http://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('398707160@qq.com','hotelmail@126.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('xxx@qq.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',filename='bg.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('xxx@qq.com','hotelmail@126.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('xxx@qq.com','spcdwgqkltjsbiah')# 打开excel文件wb = load_workbook('./base_data/工资数据.xlsx',data_only=True)# 激活工作簿sh = wb.active# 读取数据-遍历for i,r in enumerate(sh.iter_rows()):if i != 0:# 编辑内容msg_txt = f'''<h3>您好:{r[1].value}</h3><p>请查收2030年12月工资条详情:</p><table border="1"><tr><td>工号</td><td>姓名</td><td>部门</td><td>基本工资</td><td>提成</td><td>加班工资</td><td>社保扣除</td><td>考勤扣除</td><td>应发工资</td><td>邮箱</td></tr><tr><td>{r[0].value}</td><td>{r[1].value}</td><td>{r[2].value}</td><td>{r[3].value}</td><td>{r[4].value}</td><td>{r[5].value}</td><td>{r[6].value}</td><td>{r[7].value}</td><td>{r[8].value}</td><td>{r[9].value}</td></tr></table>'''msg = MIMEText(msg_txt,'html','utf-8')# 设置邮件其他信息msg['From'] = Header('财务部','utf-8')msg['Subject'] = Header('工资条','utf-8')#发送邮件smtp_obj.sendmail('xxx@qq.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('xxx@qq.com','spcdwgqkltjsbiah')# 编写内容info = {'from':'笨笨的张小白','subject':'测试zmail模块','content_text':'这个是zmail邮件信息'}# 发送邮件server.send_mail('hotelmail@126.com',info)
def send_html():# 登录邮箱server = zmail.server('xxx@qq.com','spcdwgqkltjsbiah')# 编写内容info = {'from':笨笨的张小白','subject':'测试zmail模块','content_html':'<h1>这个是zmail邮件信息</h1>'}# 发送邮件server.send_mail('hotelmail@126.com',info)
def send_file():# 登录邮箱server = zmail.server('xxx@qq.com','spcdwgqkltjsbiah')# 编写内容info = {'from':'笨笨的张小白','subject':'测试zmail模块','content_html':'<h1>这个是zmail邮件信息</h1>','attachments':[r'.\base_data\backg.jpg']}# 发送邮件server.send_mail('hotelmail@126.com',info)
def get_email():# 登录邮箱server = zmail.server('xxx@qq.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()
使用Python自动发送邮件相关推荐
- python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件
最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...
- python自动发送邮件_Python自动发送邮件
用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...
- Python 自动发送邮件详细教程
自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢 ...
- csdn最牛最全的使用python自动发送邮件
使用python自动发送邮件 1.Python 自带的发送邮件功能 在生成报告后我们希望框架能自动把报告发送到我们的邮箱中.和outlook,foxmail等邮件客户端一样,Python中发送邮件需要 ...
- python自动发送邮件
python自动发送邮件 1.导入yagmail pip install yagmail #如果上面方式报错,建议使用阿里云镜像进行添加 pip install yagmail -i https:// ...
- 高效办公,如何利用Python自动发送邮件
自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...
- python自动发送邮件脚本
目录 需要开通smtp功能 脚本 需要开通smtp功能 这里举例子使用的163的邮箱,每个邮箱都是一样的,发件邮箱设置即可 163网易免费邮-你的专业电子邮局 脚本 # -*- coding:utf- ...
- python自动发送邮件实现
目录 1 前言 2 准备工作 2.1 电子邮件的基础知识. 2.2 python邮件库 2.3 邮箱设置 3 python实现邮件自动发送 3.1 SMTP()和send()方法介绍 3.2 pyth ...
- Python 自动发送邮件实战案例,人人都可以学会
自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢? ...
- python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复
在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件.今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件. 一.获取邮箱的SMT ...
最新文章
- 述说C#中的值类型和引用类型的千丝万缕
- 2019年上半年收集到的人工智能循环神经网络干货文章
- poj 1113 Wall 凸包的应用
- 机器学习付费专栏的一些简介
- java操作hdfs文件、文件夹
- P1072-Hankson的趣味题【数论,gcd】
- 6G尚处于早期研究阶段,长足发展需要时间和耐心
- 微信公布6月朋友圈十大谣言 包括不打疫苗不让上飞机高铁等
- html5权威指南 预读,《HTML5权威指南》
- 《编码规范和测试方法——C/C++版》学习笔记 ·001
- mybatis 原理_了解Mybatis的工作原理吗
- MATLAB三维散点图的绘制函数详解(scatter3、plot3) (有示例)
- 【Java框架】CSFramework框架的应用——简易聊天室
- 解决:win10有提示音,但是播视频没有声音
- 【R语言】典型相关分析,自写函数计算相关系数
- 4张图搞懂Salesforce的认证体系(附新手考证攻略)
- 简师网:公务员这些知识点需要背诵!
- Win10自动宽带连接
- buddypress主题_WordPress Gone Social-BuddyPress
- csr 矩阵 转为 tensor