引言

你是否想每天早晨一睁眼就能在微信收到今天的最新天气预报?然而,Python中的许多关于微信的第三方库都被微信禁用,根本原因是微信网页登录的禁用。

不过没有关系,我们可以另辟蹊径:将需要的内容以邮件的形式发送至指定QQ邮箱,然后用微信自带的“QQ邮箱提醒”功能,获取邮件。

准备

1、微信中启用“QQ邮箱提醒”,根据指引绑定邮箱。 微信设置QQ邮箱提醒的方法https://jingyan.baidu.com/article/1e5468f97e7474094961b7de.html

2、启用QQ邮箱的STMP功能(默认禁用)。进入QQ邮箱,然后点击位于顶部的【设置】按钮,选择【账户设置】,然后下拉到这个位置。开启POP3/SMTP服务,验证后会给到一个授权码,后续服务端用该授权码登录邮箱

程序实现

1、引入必要的模块。

import smtplib #用于邮件的发信动作
from email.mime.text import MIMEText #邮件内容支持纯文本、HTML
from email.mime.image import MIMEImage #邮件内容支持图片
from email.mime.multipart import MIMEMultipart #邮件内容支持附件
from email.mime.application import MIMEApplication
from email.header import Header #用于构建邮件头

2、收发邮箱的关键信息赋值。

sender_addr = 'Ryze@qq.com' #发信邮箱
psd = '*****' #QQ邮箱授权码
receiver_addr = 'Camille@qq.com' #收信邮箱
smtp_server = 'smtp.qq.com' #发信服务器

注意:“password”并非QQ密码,而是上文提到的授权码。

3、邮箱正文。

邮箱正文内容不同,发送方式不同,主要分为纯文本、HTML、图片、附件等形式。

(1) 纯文本

#邮件正文,第一个参数为正文内容,第二个参数为纯文本格式,第三个参数为编码
msg = MIMEText('连你都被加强了,那我呢?', 'plain', 'utf-8')#邮件头信息
msg['From'] = Header('符文法师')  #发送者
msg['To'] = Header('青钢影')  #接收者
subject = '英雄联盟设计师!' #邮件题目
msg['Subject'] = Header(subject, 'utf-8') #邮件主题

效果如下:

(2) HTML

与纯文笔相比,只需将邮件正文代码:

msg = MIMEText('连你都被加强了,那我呢?', 'plain', 'utf-8')

修改为:

# 正文含有超链接
html_msg = """
<p>我也曾是战斗法师...</p>
<p><a href="https://www.bilibili.com/video/BV194411i79X?spm_id_from=333.999.0.0&vd_source=75b66cf905f08cd449e94bc1ba8938d3">扣1回调超负荷护盾</a></p>
"""msg = MIMEText(html_msg, 'html', 'utf-8') #第二个参数为HTML格式

效果如下:

(3) 附件

发送带附件的邮件,首先要创建MIMEMultipart()实例,然后构造附件,如果有多个附件,可依次构造,最后发送。

msg = MIMEMultipart() #带附件的实例#邮件头信息
msg['From'] = Header('符文法师')  #发送者
msg['To'] = Header('青钢影')  #接收者
subject = '英雄联盟设计师!' #邮件题目
msg['Subject'] = Header(subject, 'utf-8') #邮件主题# 正文含有超链接
html_msg = """
<p>我也曾是战斗法师...</p>
<p><a href="https://www.bilibili.com/video/BV194411i79X?spm_id_from=333.999.0.0&vd_source=75b66cf905f08cd449e94bc1ba8938d3">扣1回调超负荷护盾</a></p>
"""msg.attach(MIMEText(html_msg, 'html', 'utf-8')) #邮件正文内容#构造附件1
att1 = MIMEApplication(open('Ryze.xlsx','rb').read())
att1['Content-Type'] = 'application/octet-stream'
#filename指邮件中显示的附件名
att1.add_header('Content-Disposition', 'attachment', filename="瑞兹改动整理.xlsx")
msg.attach(att1)#构造附件2
att2 = MIMEApplication(open('Camille.xlsx','rb').read())
att2['Content-Type'] = 'application/octet-stream'
att2.add_header('Content-Disposition', 'attachment', filename="卡蜜尔改动整理.xlsx")
msg.attach(att2)

效果如下:

 4、发送邮件。

try:smtpobj = smtplib.SMTP_SSL(smtp_server)# 建立连接,qq邮箱服务的端口号为465smtpobj.connect(smtp_server, 465)    # 登录,发送者账号和口令smtpobj.login(sender_addr, psd)   # 发送邮件smtpobj.sendmail(sender_addr, receiver_addr, msg.as_string()) print("邮件发送成功")
except smtplib.SMTPException:print("无法发送邮件")
finally:# 关闭服务器smtpobj.quit()

结论

本篇文章介绍了使用Python发送邮件的方法,包括含附件。基于本文提到的方法,有望实现程序发送邮件自动化。

附录:完整代码

import smtplib #用于邮件的发信动作
from email.mime.text import MIMEText #邮件内容支持纯文本、HTML
from email.mime.image import MIMEImage #邮件内容支持图片
from email.mime.multipart import MIMEMultipart #邮件内容支持附件
from email.mime.application import MIMEApplication
from email.header import Header #用于构建邮件头sender_addr = 'sender@qq.com' #发信邮箱
psd = 'xxxxxxxxxxxxxxxx' #QQ邮箱授权码
receiver_addr = 'receiver@qq.com' #收信邮箱
smtp_server = 'smtp.qq.com' #发信服务器#邮件正文,第一个参数为正文内容,第二个参数为纯文本格式,第三个参数为编码
#msg = MIMEText('连你都被加强了,那我呢?', 'plain', 'utf-8')msg = MIMEMultipart() #带附件的实例html_msg = """
<p>我也曾是战斗法师...</p>
<p><a href="https://www.bilibili.com/video/BV194411i79X?spm_id_from=333.999.0.0&vd_source=75b66cf905f08cd449e94bc1ba8938d3">扣1回调超负荷护盾</a></p>
"""#msg = MIMEText(html_msg, 'html', 'utf-8') #第二个参数为HTML格式msg.attach(MIMEText(html_msg, 'html', 'utf-8')) #邮件正文内容#构造附件1
att1 = MIMEApplication(open('Ryze.xlsx','rb').read())
att1['Content-Type'] = 'application/octet-stream'
#filename指邮件中显示的附件名
att1.add_header('Content-Disposition', 'attachment', filename="瑞兹改动整理.xlsx")
msg.attach(att1)#构造附件2
att2 = MIMEApplication(open('Camille.xlsx','rb').read())
att2['Content-Type'] = 'application/octet-stream'
att2.add_header('Content-Disposition', 'attachment', filename="卡蜜尔改动整理.xlsx")
msg.attach(att2)#邮件头信息
msg['From'] = Header('符文法师')  #发送者
msg['To'] = Header('青钢影')  #接收者
subject = '英雄联盟设计师!' #邮件题目
msg['Subject'] = Header(subject, 'utf-8') #邮件主题try:smtpobj = smtplib.SMTP_SSL(smtp_server)# 建立连接,qq邮箱服务的端口号为465smtpobj.connect(smtp_server, 465)    # 登录,发送者账号和口令smtpobj.login(sender_addr, psd)   # 发送邮件smtpobj.sendmail(sender_addr, receiver_addr, msg.as_string()) print("邮件发送成功")
except smtplib.SMTPException:print("无法发送邮件")
finally:# 关闭服务器smtpobj.quit()

Python实用程序(1):发送邮件相关推荐

  1. 定时运行python脚本并发送邮件_python实现定时发送邮件到指定邮箱

    本文实例为大家分享了python实现定时发送邮件到指定邮箱的具体代码,供大家参考,具体内容如下 整个链路:传感器采集端采集数据,边缘端上传数据库,从数据库拿到数据. 产品端有个自动出报告的需求,并且希 ...

  2. python 实现SMTP发送邮件(四)-添加附件

    Python实现SMTP发送邮件(四)-添加附件 [Python]  纯文本查看  复制代码 ? 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 ...

  3. python smtplib.SMTP()发送邮件报“UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xba in position 0: i

    python smtplib.SMTP()发送邮件报"UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position ...

  4. 用python自动化定时发送邮件(普通文本,html,图片,附件等)_亲测有效

    这周有需求将Bi报表每天定时,自动的群发给team成员,今天搜集资料完成了这个需求,可以发送普通文本,图片,附件已经html形式将其展现出来,整套代码如下:已亲测可行,相关信息已脱敏~ 写完脚本后登陆 ...

  5. Python实现自动发送邮件(详解)

    Python实现自动发送邮件 1.开启SMTP服务 为了实现自动发送邮件的目的,我们需要在邮箱中开启SMTP服务: 这点很关键,别忘了去开启SMTP, 别忘了去开启SMTP,否则邮件是无法发送成功的 ...

  6. 如何用python自动发邮件_Python | 解放双手,用Python实现自动发送邮件

    解放双手,用Python实现自动发送邮件 使用Python实现自动化邮件发送,可以让你摆脱繁琐的重复性业务,节省非常多的时间. Python有两个内置库:smtplib和email,能够实现邮件功能, ...

  7. Python使用SMTP发送邮件

    1.目标 使用SMTP发送邮件 2.系统环境 操作系统:Win7 64 Python版本:3.7.0 3.代码参考 #config:utf-8                         #强制使 ...

  8. python smtp模块发送邮件

    应用场景: 在服务器上设置的告警参数被触发后,通常是发送手机短信或者邮件通知,本例就以发送邮件为例,手机怎么收邮件呢?以qq邮箱为例,在手机端安装qq邮箱app,触发邮件后,手机也能及时查看了 代码展 ...

  9. python通过代理发送邮件_Python实现SMTP发送邮件详细教程

    简介 Python发送邮件的教程本人在网站搜索的时候搜索出来了一大堆,但是都是说了一大堆原理然后就推出了实现代码,我测试用给出的代码进行发送邮件时都不成功,后面找了很久才找到原因,这都是没有一个详细的 ...

最新文章

  1. linux的那些破事
  2. 开源 java CMS - FreeCMS2.8 自定义标签 channelSon
  3. fping的使用方法
  4. linux制作成后台服务,把dotnetcore 控制台app设置成linux后台服务
  5. 评估一个垃圾收集(GC)
  6. MySQL数据库主从同步的3种一致性方案实现,及优劣比较
  7. 中文python笔记_python 中文编码笔记
  8. 单链表(不带头结点)
  9. 本周进步要点(第3周1.9--1.15)
  10. 源码nginx+php
  11. c语言学习-猜数字游戏
  12. ActivityManager解析及使用
  13. 从古代遗传下来的设计值得一看!
  14. Nginx:屏蔽 IP
  15. Verilog中reg和wire的区别
  16. kubeadm reset重新初始化过程
  17. Python入门习题大全——检查用户名
  18. 线性回归和贝叶斯的线性回归
  19. 引导滤波GuidedFilter
  20. 农村电子商务专家学者以及来自全国各地的淘宝村代表将齐聚一堂

热门文章

  1. SpringBoot生成条形码(一维码)
  2. 零基础python嵌入式开发_python写嵌入式
  3. iFunFactory是一家韩国游戏服务器公司
  4. OLE:对象的类没有在注册数据库中注册 问题的三种解决方法
  5. 编写函数,判断输入的三个数字是否能构成三角形的三条边
  6. 计算机和应用相对指标应注意,0302相对指标的种类及计算方法.doc
  7. L9362_四通道低侧驱动器
  8. 经典九大排序(1)——简单排序
  9. TGU算法课程_递归与分治_Test1题解
  10. NC6 JUnit测试