Python学习笔记第二十三天(HTML格式的邮件)

简介: Python学习笔记第二十三天讲解Python发送HTML格式的邮件、Python发送带附件的邮件、HTML文本中添加图片的用法。

Python发送HTML格式的邮件

Python发送HTML格式的邮件与发送纯文本消息的邮件不同之处就是将MIMEText中_subtype设置为html。

# 实例 1
import smtplib 
from email.mime.text import MIMEText 
from email.header import Header 
sender = 'from@XX.com' 
receivers = ['XXXXXX@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 
mail_msg = """ <p>Python 邮件发送测试...</p> <p><a href="http://www.baidu.com">这是一个链接</a></p> """ 
message = MIMEText(mail_msg, 'html', 'utf-8') 
message['From'] = Header("baidu", 'utf-8')
message['To'] = Header("测试", 'utf-8') 
subject = 'Python SMTP 邮件测试' 
message['Subject'] = Header(subject, 'utf-8') 
try: 
    smtpObj = smtplib.SMTP('localhost') 
    smtpObj.sendmail(sender, receivers, message.as_string()) 
    print("邮件发送成功")
except smtplib.SMTPException:
    print("Error: 无法发送邮件")
AI 代码解读

Python发送带附件的邮件

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

# 实例 2
import smtplib 
from email.mime.text import MIMEText 
from email.mime.multipart import MIMEMultipart
from email.header import Header 
sender = 'from@XX.com' 
receivers = ['XXXXXX@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 
#创建一个带附件的实例 
message = MIMEMultipart() 
message['From'] = Header("百度", 'utf-8')
message['To'] = Header("测试", 'utf-8') 
subject = 'Python SMTP 邮件测试' 
message['Subject'] = Header(subject, 'utf-8')
#邮件正文内容 
message.attach(MIMEText('这是Python 邮件发送测试……', 'plain', 'utf-8'))
# 构造附件1,传送当前目录下的 test.txt 文件 
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8') 
att1["Content-Type"] = 'application/octet-stream' 
# 这里的filename可以任意写,写什么名字,邮件中显示什么名字 
att1["Content-Disposition"] = 'attachment; filename="test.txt"' 
message.attach(att1) 
# 构造附件2,传送当前目录下的 baidu.txt 文件 
att2 = MIMEText(open('runoob.txt', 'rb').read(), 'base64', 'utf-8') 
att2["Content-Type"] = 'application/octet-stream' 
att2["Content-Disposition"] = 'attachment; filename="baidu.txt"' 
message.attach(att2) 
try: 
    smtpObj = smtplib.SMTP('localhost') 
    smtpObj.sendmail(sender, receivers, message.as_string()) 
    print("邮件发送成功" )
except smtplib.SMTPException:
    print("Error: 无法发送邮件")
AI 代码解读

HTML文本中添加图片

邮件的 HTML 文本中一般邮件服务商添加外链是无效的,正确添加图片

import smtplib 
from email.mime.image import MIMEImage 
from email.mime.multipart import MIMEMultipart 
from email.mime.text import MIMEText 
from email.header import Header 
sender = 'from@XX.com' 
receivers = ['XXXXXX@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱 
msgRoot = MIMEMultipart('related')
msgRoot['From'] = Header("百度", 'utf-8') 
msgRoot['To'] = Header("测试", 'utf-8') 
subject = 'Python SMTP 邮件测试' 
msgRoot['Subject'] = Header(subject, 'utf-8') 
msgAlternative = MIMEMultipart('alternative') 
msgRoot.attach(msgAlternative)
mail_msg = """ <p>Python 邮件发送测试...</p> <p><a href="http://www.runoob.com">菜鸟教程链接</a></p> <p>图片演示:</p> <p><img src="cid:image1"></p> """ 
msgAlternative.attach(MIMEText(mail_msg, 'html', 'utf-8')) # 指定图片为当前目录 
fp = open('test.png', 'rb')
msgImage = MIMEImage(fp.read()) fp.close() # 定义图片 ID,在 HTML 文本中引用 msgImage.add_header('Content-ID', '<image1>') 
msgRoot.attach(msgImage) 
try: 
    smtpObj = smtplib.SMTP('localhost') 
    smtpObj.sendmail(sender, receivers, msgRoot.as_string()) 
    print("邮件发送成功" except) 
smtplib.SMTPException: 
    print("Error: 无法发送邮件")
AI 代码解读

今天学习的是Python发送邮件学会了吗。 今天学习内容总结一下:

  1. Python发送HTML格式的邮件
  2. Python发送带附件的邮件
  3. HTML文本中添加图片
相关文章
|
3月前
|
Python格式
Python格式
39 5
Python 爬虫必备杀器,xpath 解析 HTML
【11月更文挑战第17天】XPath 是一种用于在 XML 和 HTML 文档中定位节点的语言,通过路径表达式选取节点或节点集。它不仅适用于 XML,也广泛应用于 HTML 解析。基本语法包括标签名、属性、层级关系等的选择,如 `//p` 选择所有段落标签,`//a[@href=&#39;example.com&#39;]` 选择特定链接。在 Python 中,常用 lxml 库结合 XPath 进行网页数据抓取,支持高效解析与复杂信息提取。高级技巧涵盖轴的使用和函数应用,如 `contains()` 用于模糊匹配。
Yagmail邮件发送库:如何用Python实现自动化邮件营销?
本文详细介绍了如何使用Yagmail库实现自动化邮件营销。Yagmail是一个简洁强大的Python库,能简化邮件发送流程,支持文本、HTML邮件及附件发送,适用于数字营销场景。文章涵盖了Yagmail的基本使用、高级功能、案例分析及最佳实践,帮助读者轻松上手。
99 4
|
4月前
|
使用Python实现自动化邮件通知:当长时程序运行结束时
本文介绍了如何使用Python实现自动化邮件通知功能,当长时间运行的程序完成后自动发送邮件通知。主要内容包括:项目背景、设置SMTP服务、编写邮件发送函数、连接SMTP服务器、发送邮件及异常处理等步骤。通过这些步骤,可以有效提高工作效率,避免长时间等待程序结果。
133 9
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
利用Python将Excel快速转换成HTML
本文介绍如何使用Python将Excel文件快速转换成HTML格式,以便在网页上展示或进行进一步的数据处理。通过pandas库,你可以轻松读取Excel文件并将其转换为HTML表格,最后保存为HTML文件。文中提供了详细的代码示例和注意事项,帮助你顺利完成这一任务。
126 0
Beautiful Soup 解析html | python小知识
在数据驱动的时代,网页数据是非常宝贵的资源。很多时候我们需要从网页上提取数据,进行分析和处理。Beautiful Soup 是一个非常流行的 Python 库,可以帮助我们轻松地解析和提取网页中的数据。本文将详细介绍 Beautiful Soup 的基础知识和常用操作,帮助初学者快速入门和精通这一强大的工具。【10月更文挑战第11天】
120 2
Python实用记录(八):不同格式之间的转换
本文介绍了Python中不同数据格式之间的转换方法,包括numpy数组与列表、字符串之间的转换,以及PyTorch张量与numpy数组之间的转换。
30 0
7-21|Python加载plist格式文件
7-21|Python加载plist格式文件
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等