IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python实用程序(1):发送邮件 -> 正文阅读

[Python知识库]Python实用程序(1):发送邮件

引言

????????你是否想每天早晨一睁眼就能在微信收到今天的最新天气预报?然而,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邮箱服务的端口号为465
    smtpobj.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邮箱服务的端口号为465
    smtpobj.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知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:24:34  更:2022-09-21 00:25:33 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 14:09:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计