发送普通邮件

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自动发送邮件相关推荐

  1. python自动发送邮件不需要发件邮箱_python使用QQ邮箱实现自动发送邮件

    最近用到Python自动发送邮件,主要就是三步,登录邮件.写邮件内容.发送,用到的库是 smtplib 和 email,直接使用pip安装即可 我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMT ...

  2. python自动发送邮件_Python自动发送邮件

    用 Python 自动发送邮件在日常工作中可以避免一些重复性的工作,Python 用来发送邮件会涉及到 smtplib 和 Email 两个模块,smtplib 是用来发送邮件用的,Email 是用来 ...

  3. Python 自动发送邮件详细教程

    自动发送邮件能应用于许多场景中,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢 ...

  4. csdn最牛最全的使用python自动发送邮件

    使用python自动发送邮件 1.Python 自带的发送邮件功能 在生成报告后我们希望框架能自动把报告发送到我们的邮箱中.和outlook,foxmail等邮件客户端一样,Python中发送邮件需要 ...

  5. python自动发送邮件

    python自动发送邮件 1.导入yagmail pip install yagmail #如果上面方式报错,建议使用阿里云镜像进行添加 pip install yagmail -i https:// ...

  6. 高效办公,如何利用Python自动发送邮件

    自动发送邮件 我们把报表做出来以后一般都是需要发给别人查看,对于一些每天需要发的报表或者是需要一次发送多份的报表,这个时候可以考虑借助Python来自动发送邮件. 使用邮箱的第一步 一般我们在使用QQ ...

  7. python自动发送邮件脚本

    目录 需要开通smtp功能 脚本 需要开通smtp功能 这里举例子使用的163的邮箱,每个邮箱都是一样的,发件邮箱设置即可 163网易免费邮-你的专业电子邮局 脚本 # -*- coding:utf- ...

  8. python自动发送邮件实现

    目录 1 前言 2 准备工作 2.1 电子邮件的基础知识. 2.2 python邮件库 2.3 邮箱设置 3 python实现邮件自动发送 3.1 SMTP()和send()方法介绍 3.2 pyth ...

  9. Python 自动发送邮件实战案例,人人都可以学会

    自动发送邮件能应用于许多场景,比如我想要知道股票策略中的股票池是否有实时的更新,这时候如果再拉一遍数据,跑一遍脚本,实在是太浪费时间了.为什么不把这一套流程放到服务器上,然后到点自动运行并发送邮件呢? ...

  10. python自动发送邮件(html、附件等),qq邮箱和网易邮箱发送和回复

    在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件.今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件. 一.获取邮箱的SMT ...

最新文章

  1. 述说C#中的值类型和引用类型的千丝万缕
  2. 2019年上半年收集到的人工智能循环神经网络干货文章
  3. poj 1113 Wall 凸包的应用
  4. 机器学习付费专栏的一些简介
  5. java操作hdfs文件、文件夹
  6. P1072-Hankson的趣味题【数论,gcd】
  7. 6G尚处于早期研究阶段,长足发展需要时间和耐心
  8. 微信公布6月朋友圈十大谣言 包括不打疫苗不让上飞机高铁等
  9. html5权威指南 预读,《HTML5权威指南》
  10. 《编码规范和测试方法——C/C++版》学习笔记 ·001
  11. mybatis 原理_了解Mybatis的工作原理吗
  12. MATLAB三维散点图的绘制函数详解(scatter3、plot3) (有示例)
  13. 【Java框架】CSFramework框架的应用——简易聊天室
  14. 解决:win10有提示音,但是播视频没有声音
  15. 【R语言】典型相关分析,自写函数计算相关系数
  16. 4张图搞懂Salesforce的认证体系(附新手考证攻略)
  17. 简师网:公务员这些知识点需要背诵!
  18. Win10自动宽带连接
  19. buddypress主题_WordPress Gone Social-BuddyPress
  20. csr 矩阵 转为 tensor

热门文章

  1. 图像处理之提取水平线和垂直线
  2. 开源数据库 就是免费 ,我白嫖我光荣 荣耀V2
  3. Xenapp appcenter初始化报错:Errors occurred when using XAC-1 in the discovery process
  4. CSDN的APP有毒吗?我能不能举报?
  5. 吃透Chisel语言.01.大家Verilog和VHDL用得好好的,为什么要整个Chisel语言出来?
  6. 最有趣的linux命令玩法20条总结
  7. PS学习记录-矢量图和位图
  8. linux关防火墙命令
  9. 42、基于51单片机数控电源稳压电源电压数码管显示系统设计
  10. vue 判断鼠标上下滚动