python使用QQ邮箱实现自动发送邮件
时间:2022-07-27
本文章向大家介绍python使用QQ邮箱实现自动发送邮件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
最近用到Python自动发送邮件,主要就是三步,登录邮件、写邮件内容、发送,用到的库是 smtplib 和 email,直接使用pip安装即可
我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMTP服务
记住这个授权码,这个授权码就是Python脚本中登录邮箱时的密码,而不是你平时登录邮箱时的那个密码
一.发送普通文本邮件
#发送多种类型的邮件
from email.mime.multipart import MIMEMultipart
msg_from = '1508691067@qq.com' # 发送方邮箱
passwd = 'xxx' #就是上面的授权码
to= ['1508691067@qq.com'] #接受方邮箱
#设置邮件内容
#MIMEMultipart类可以放任何内容
msg = MIMEMultipart()
conntent="这个是字符串"
#把内容加进去
msg.attach(MIMEText(conntent,'plain','utf-8'))
#设置邮件主题
msg['Subject']="这个是邮件主题"
#发送方信息
msg['From']=msg_from
#开始发送
#通过SSL方式发送,服务器地址和端口
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 登录邮箱
s.login(msg_from, passwd)
#开始发送
s.sendmail(msg_from,to,msg.as_string())
print("邮件发送成功")
二.发送携带附件的邮件
import smtplib
from email.mime.text import MIMEText
#发送多种类型的邮件
from email.mime.multipart import MIMEMultipart
msg_from = '1508691067@qq.com' # 发送方邮箱
passwd = 'xxxxx'
to= ['1508691067@qq.com'] #接受方邮箱
#设置邮件内容
#MIMEMultipart类可以放任何内容
msg = MIMEMultipart()
conntent="这个是字符串"
#把内容加进去
msg.attach(MIMEText(conntent,'plain','utf-8'))
#添加附件
att1=MIMEText(open('result.xlsx','rb').read(),'base64','utf-8') #打开附件
att1['Content-Type']='application/octet-stream' #设置类型是流媒体格式
att1['Content-Disposition']='attachment;filename=result.xlsx' #设置描述信息
msg.attach(att1) #加入到邮件中
#设置邮件主题
msg['Subject']="这个是邮件主题"
#发送方信息
msg['From']=msg_from
#开始发送
#通过SSL方式发送,服务器地址和端口
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 登录邮箱
s.login(msg_from, passwd)
#开始发送
s.sendmail(msg_from,to,msg.as_string())
print("邮件发送成功")
三.发送携带图片的附件
同理,可以使用上面的方法也可以发送图片附件
import smtplib
from email.mime.text import MIMEText
#发送多种类型的邮件
from email.mime.multipart import MIMEMultipart
msg_from = '1508691067@qq.com' # 发送方邮箱
passwd = 'xxxxx'
to= ['1508691067@qq.com'] #接受方邮箱
#设置邮件内容
#MIMEMultipart类可以放任何内容
msg = MIMEMultipart()
conntent="这个是字符串"
#把内容加进去
msg.attach(MIMEText(conntent,'plain','utf-8'))
#添加附件
att1=MIMEText(open('result.xlsx','rb').read(),'base64','utf-8') #打开附件
att1['Content-Type']='application/octet-stream' #设置类型是流媒体格式
att1['Content-Disposition']='attachment;filename=result.xlsx' #设置描述信息
att2=MIMEText(open('1.jpg','rb').read(),'base64','utf-8')
att2['Content-Type']='application/octet-stream' #设置类型是流媒体格式
att2['Content-Disposition']='attachment;filename=1.jpg' #设置描述信息
msg.attach(att1) #加入到邮件中
msg.attach(att2)
#设置邮件主题
msg['Subject']="这个是邮件主题"
#发送方信息
msg['From']=msg_from
#开始发送
#通过SSL方式发送,服务器地址和端口
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 登录邮箱
s.login(msg_from, passwd)
#开始发送
s.sendmail(msg_from,to,msg.as_string())
print("邮件发送成功")
四.发送 html 格式的邮件
import smtplib
from email.mime.text import MIMEText
#发送多种类型的邮件
from email.mime.multipart import MIMEMultipart
import datetime
msg_from = '1508691067@qq.com' # 发送方邮箱
passwd = 'xxxxxx'
to= ['1508691067@qq.com'] #接受方邮箱
#设置邮件内容
#MIMEMultipart类可以放任何内容
msg = MIMEMultipart()
# conntent="这个是字符串"
# #把内容加进去
# msg.attach(MIMEText(conntent,'plain','utf-8'))
#添加附件
att1=MIMEText(open('result.xlsx','rb').read(),'base64','utf-8') #打开附件
att1['Content-Type']='application/octet-stream' #设置类型是流媒体格式
att1['Content-Disposition']='attachment;filename=result.xlsx' #设置描述信息
att2=MIMEText(open('1.jpg','rb').read(),'base64','utf-8')
att2['Content-Type']='application/octet-stream' #设置类型是流媒体格式
att2['Content-Disposition']='attachment;filename=1.jpg' #设置描述信息
msg.attach(att1) #加入到邮件中
msg.attach(att2)
now_time = datetime.datetime.now()
year = now_time.year
month = now_time.month
day = now_time.day
mytime = str(year) + " 年 " + str(month) + " 月 " + str(day) + " 日 "
fayanren="爱因斯坦"
zhuchiren="牛顿"
#构造HTML
content = '''
<html
<body
<h1 align="center" 这个是标题,xxxx通知</h1
<p <strong 您好:</strong </p
<blockquote <p <strong 以下内容是本次会议的纪要,请查收!</strong </p </blockquote
<blockquote <p <strong 发言人:{fayanren}</strong </p </blockquote
<blockquote <p <strong 主持人:{zhuchiren}</strong </p </blockquote
<p align="right" {mytime}</p
<body
<html
'''.format(fayanren=fayanren, zhuchiren=zhuchiren, mytime=mytime)
msg.attach(MIMEText(content,'html','utf-8'))
#设置邮件主题
msg['Subject']="这个是邮件主题"
#发送方信息
msg['From']=msg_from
#开始发送
#通过SSL方式发送,服务器地址和端口
s = smtplib.SMTP_SSL("smtp.qq.com", 465)
# 登录邮箱
s.login(msg_from, passwd)
#开始发送
s.sendmail(msg_from,to,msg.as_string())
print("邮件发送成功")
以上就是本文的全部内容,希望对大家的学习有所帮助。
- 对自己的上网搜索记录进行爬虫是怎样一种体验
- HLS Lesson13-for循环优化:合并
- HLS Lesson12-for循环优化:基本性能指标
- HLS Lesson11-c/c++ testbench书写续2
- 【机器学习】实例详解机器学习如何解决问题
- 企业网站架构之Nginx+tomcat+memcached集群
- 企业级Docker Registry开源工具Harbor的介绍以及使用指南
- HLS Lesson8-基本操作
- Windows渗透测试工具:RedSnarf
- HLS Lesson7-复合数据类型
- matlab GUI基础3
- 【Python环境】《Python数据科学入门》试译 第一章 简介
- HLS Lesson20-实例分析
- WannaCry勒索病毒详细解读
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- TS 设计模式04 - 适配器模式
- WebRTC | 原理、架构、框架目录、运行机制、核心类、PeerConnection调用过程等详解
- sql注入总结笔记
- WebRTC | Web服务器原理、Nodejs工作原理、Nodejs事件处理流程、V8引擎等要点解析
- OpenGL ES 3.0 | 围绕HelloTriangle实战案例 展开 渲染流程分析
- 基于 Kotlin + Netty 实现一个简单的 TCP 自定义协议
- dnslog带出——sqli-labs第8关
- Boolean源码解剖学
- SpringBoot+Mybatis整合出现org.apache.ibatis.binding.BindingException: Invalid bound statement (not found
- xss-labs第1~13关
- 在虚拟机上搭建xss平台
- 一个速度快,内存占用小的一致性哈希算法
- 一文搞定web微信第三方登录
- python学习笔记(1)
- Swift Mutating