python使用QQ邮箱实现自动发送邮件


Posted in Python onJune 22, 2020

最近用到Python自动发送邮件,主要就是三步,登录邮件、写邮件内容、发送,用到的库是 smtplib 和 email,直接使用pip安装即可

我使用的是QQ邮箱,首先需要设置QQ邮箱POP3/SMTP服务

python使用QQ邮箱实现自动发送邮件

python使用QQ邮箱实现自动发送邮件

python使用QQ邮箱实现自动发送邮件

记住这个授权码,这个授权码就是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("邮件发送成功")

python使用QQ邮箱实现自动发送邮件

二.发送携带附件的邮件

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("邮件发送成功")

python使用QQ邮箱实现自动发送邮件

三.发送携带图片的附件

同理,可以使用上面的方法也可以发送图片附件

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("邮件发送成功")

python使用QQ邮箱实现自动发送邮件

四.发送 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("邮件发送成功")

python使用QQ邮箱实现自动发送邮件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python中format()函数的简单使用教程
Mar 14 Python
Python通过调用mysql存储过程实现更新数据功能示例
Apr 03 Python
PyQt5每天必学之滑块控件QSlider
Apr 20 Python
python中的协程深入理解
Jun 10 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
django项目用higcharts统计最近七天文章点击量
Aug 17 Python
Pytorch之保存读取模型实例
Dec 30 Python
python如何将两张图片生成为全景图片
Mar 05 Python
哈工大自然语言处理工具箱之ltp在windows10下的安装使用教程
May 07 Python
如何用python免费看美剧
Aug 11 Python
python 下划线的多种应用场景总结
May 12 Python
浅谈keras中loss与val_loss的关系
Jun 22 #Python
python实现简易版学生成绩管理系统
Jun 22 #Python
python能否java成为主流语言吗
Jun 22 #Python
python让函数不返回结果的方法
Jun 22 #Python
python实现学生成绩测评系统
Jun 22 #Python
python算的上脚本语言吗
Jun 22 #Python
Python读取二进制文件代码方法解析
Jun 22 #Python
You might like
在Mac OS上搭建PHP的Yii框架及相关测试环境
2016/02/14 PHP
PHP实现简单的模板引擎功能示例
2017/09/02 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
Laravel 实现在Blade模版中使用全局变量代替路径的例子
2019/10/22 PHP
显示、隐藏密码
2006/07/01 Javascript
js实现点小图看大图效果的思路及示例代码
2013/10/28 Javascript
ExtJS4中的requires使用方法示例介绍
2013/12/03 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
2017/05/08 jQuery
老生常谈ES6中的类
2017/07/31 Javascript
微信小程序自定义组件实现tabs选项卡功能
2018/07/14 Javascript
微信小程序轮播图swiper代码详解
2020/12/01 Javascript
Python跳出循环语句continue与break的区别
2014/08/25 Python
python操作sqlite的CRUD实例分析
2015/05/08 Python
python实现学生管理系统
2018/01/11 Python
Python任意字符串转16, 32, 64进制的方法
2019/06/12 Python
Python中的类与类型示例详解
2019/07/10 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
在pycharm中配置Anaconda以及pip源配置详解
2019/09/09 Python
python压包的概念及实例详解
2021/02/17 Python
html5 Canvas画图教程(10)—把面拆成线条模拟出圆角矩形
2013/01/09 HTML / CSS
最新的小工具和卓越的产品设计:Oh That Tech!
2019/08/07 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
我的applet原先好好的, 一放到web server就会有问题,为什么?
2016/05/10 面试题
通用C#笔试题附答案
2016/11/26 面试题
JAVA招聘远程笔试题
2015/07/23 面试题
《会变的花树叶》教学反思
2014/02/10 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
交通工程专业推荐信
2014/09/06 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
鸟的天堂导游词
2015/01/31 职场文书
董事长开业致辞
2015/07/29 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
Redis入门基础常用操作命令整理
2022/06/01 Redis