使用Python发送HTML格式的邮件

news2024/9/29 1:20:56
使用Python发送HTML格式的邮件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JH8I9sJH-1689083323474)(0fe5bb9701654bf4b6652fa6d8cf6557.gif)]

😇博主简介:我是一名正在攻读研究生学位的人工智能专业学生,我可以为计算机、人工智能相关本科生和研究生提供排忧解惑的服务。如果您有任何问题或困惑,欢迎随时来交流哦!😄

✨座右铭:宝剑锋从磨砺出,梅花香自苦寒来。

⛪️个人主页:点击进入博客主页

🚀欢迎大家浏览博主的文章!在阅读过程中,如果发现需要纠正的地方,请不吝指出,愿能与诸君共同进步!

文章目录

    • 🍭使用Python发送HTML格式的邮件
      • 设置邮件信息和内容
        • 邮件信息
      • 构建HTML内容
        • HTML内容
      • 嵌入图片
        • 嵌入图片代码
      • 发送邮件
      • 发送邮件代码,(未加入图片)
      • 结论
  • 🍭总结


在这里插入图片描述

正文

🍭使用Python发送HTML格式的邮件

在现代通信中,电子邮件是一种常见的沟通方式。通过Python编程语言,您可以使用内置的库来发送邮件,并在邮件中嵌入HTML内容和图片。上一篇博客中介绍了如何开通QQ邮箱的SMTP服务,以及如何发送文本邮件。本篇博客将介绍如何使用Python发送带有HTML格式内容,以及涉及的步骤和代码示例。
如何开启QQ邮件的SMTP服务以及如何使用Python发送邮件
在这里插入图片描述

设置邮件信息和内容

首先,我们需要设置邮件的基本信息,如发件人、收件人、主题等。您可以使用emailsmtplib库来完成这一任务。

邮件信息

sender_email = "your_email@example.com"
receiver_email = "recipient@example.com"
subject = "HTML邮件示例"

构建HTML内容

在邮件的HTML内容中,您可以编写任何格式和样式的内容。在这个示例中,我们构建了一个简单的HTML页面。

HTML内容

html_content = """
<html>
<head></head>
<body>
  <h1>这是一个HTML邮件示例</h1>
  <p>这是一封使用Python发送的带有HTML内容的邮件。</p>
</body>
</html>
"""

嵌入图片

如果您想在邮件中嵌入图片,需要按以下步骤操作:

  1. 通过二进制模式打开图片文件。
  2. 读取图片的二进制数据。
  3. 创建一个MIMEImage对象,将图片数据附加到该对象上,并设置Content-ID
  4. 通过msg.attach()方法将图片添加到邮件内容中。

嵌入图片代码

from email.mime.image import MIMEImage

with open("path_to_your_image.png", "rb") as image_file:
    image_data = image_file.read()
    image = MIMEImage(image_data)
    image.add_header("Content-ID", "<image1>")
    msg.attach(image)

发送邮件

使用SMTP协议发送邮件需要配置SMTP服务器的信息,以及发件人的用户名和密码。在本例中,我们使用了QQ邮箱的SMTP服务器。

发送邮件代码,(未加入图片)

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

# 邮件信息
sender_email = "350728668@qq.com"
receiver_email = "1443004194@qq.com"
subject = "HTML邮件示例"
html_content = """
<html>
<head></head>
<body>
  <h1>这是一个HTML邮件示例</h1>
  <p>这是一封使用Python发送的带有HTML内容的邮件。</p>
</body>
</html>
"""

# 设置邮件内容
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
msg.attach(MIMEText(html_content, "html"))

# 连接到SMTP服务器并发送邮件
smtp_server = "smtp.qq.com"
smtp_port = 465  # 使用SSL加密连接的端口
smtp_username = "350728668@qq.com"
smtp_password = "gxsdasdasdafcbag"
#smtp_password为授权码,上边的为随机生成不能正常使用。
server = None  # 初始化server变量

try:
    server = smtplib.SMTP_SSL(smtp_server, smtp_port)  # 使用SMTP_SSL来建立SSL加密连接
    server.login(smtp_username, smtp_password)
    server.sendmail(sender_email, receiver_email, msg.as_string())
    print("邮件发送成功!")
except Exception as e:
    print("邮件发送失败:", str(e))
finally:
    if server:
        server.quit()

运行代码:
在这里插入图片描述
邮件发送成功!目标邮箱已经接收到文本邮件。
在这里插入图片描述

结论

这篇博客介绍了如何使用Python发送带有HTML内容的邮件。我们了解了设置邮件信息、构建HTML内容、嵌入图片和发送邮件的基本步骤和示例代码。希望这篇博客能够帮助您更好地理解如何在Python中发送带有图片的网页邮件。通过详细的步骤和示例代码,您可以更轻松地在自己的项目中应用这些概念。

🍭总结

在这里插入图片描述

感谢浏览!
如果这篇文章对您有帮助,请点个小赞吧,愿能与诸君共同进步!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/853166.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

业务中如何过滤敏感词

在我们访问网站的时候&#xff0c;如果发现我们发布的内容有色情暴力的东西等等&#xff0c;会屏蔽掉&#xff0c;这种行为就是过滤敏感词。 从技术层面实现起来&#xff0c;其实比较简单&#xff0c;因为我们输入的内容就是一个大型的字符串&#xff0c;我们要调用某些api来判…

【Vue3】Teleport 传送组件

Teleport 组件是 Vue.js 3 中引入的特性之一&#xff0c;它允许将组件的内容传送&#xff08;teleport&#xff09;到当前组件之外的目标位置&#xff0c;这在处理复杂的布局、模态框等方案时非常有用。 A.vue <template><div class"dialog"><heade…

SQL server 异地备份数据库

异地备份数据库 1.备份服务器中设置共享文件夹 2.源服务器数据库中添加异地备份代理作业 EXEC sp_configure show advanced options, 1;RECONFIGURE; EXEC sp_configure xp_cmdshell, 1;RECONFIGURE; declare machine nvarchar(50) 192.168.11.10 --服务器IP declare pa…

设备固定资产管理系统

资产管理是企业经营和发展的基础&#xff0c;特别是设备资产管理。适当的设备资产管理可以有效地提升企业的经营效率&#xff0c;为提高核心竞争能力提供高效的前提。 固资及设备管理系统&#xff08;EAM&#xff09;它是一种有效的固定资产管理模式&#xff0c;可以帮助企业更…

分布式应用:Zabbix 自动发现与自动注册

目录 一、理论 1.Zabbix 自动发现 2.Zabbix 自动发现部署 3.Zabbix 自动注册 4.Zabbix 自动注册部署 二、实验 1.Zabbix 自动发现部署 2.Zabbix 自动注册部署 三、总结 一、理论 1.Zabbix 自动发现 &#xff08;1&#xff09;原理 zabbix 自动发现(对于 agent2 是被…

爱校对-校对软件的重要性:减少错别字和语法错误的尴尬

校对软件在减少错别字和语法错误方面发挥着重要的作用&#xff0c;帮助避免尴尬情况的发生。以下是校对软件的重要性所在&#xff1a; 1.提高专业形象&#xff1a;新闻稿件是传递信息和建立声誉的关键工具。若存在大量的错别字和语法错误&#xff0c;会严重影响读者对媒体机构或…

探究使用HTTP代理ip后无法访问网站的原因与解决方案

目录 访问网站的原理是什么 1. DNS解析 2. 建立TCP连接 3. 发送HTTP请求&#xff1a; 4. 服务器响应&#xff1a; 5. 浏览器渲染&#xff1a; 6. 页面展示&#xff1a; 使用代理IP后访问不了网站&#xff0c;有哪些方面的原因 1. 代理IP的可用性&#xff1a; 2. 代理…

webshell免杀项目-ByPassGodzilla(一)

哥斯拉WebShell免杀生成工具 项目地址&#xff1a; https://github.com/Tas9er/ByPassGodzilla ㊙️友情提示 如果您的网站被恶意插入此后门&#xff0c;说明了两个问题&#xff1a; 1.你的站被日麻了 2.我对您的Diao站没有任何兴趣&#xff0c;只是有的Diao毛用工具不改密…

用条件格式美化图表,同事赞叹你的高超技巧

在工作中&#xff0c;我们经常需要制作图表来展示数据和趋势&#xff0c;但普通的图表可能显得平淡无奇。然而&#xff0c;通过巧妙运用条件格式&#xff0c;我们可以为图表增添美感和可读性&#xff0c;让同事们对你的技巧赞叹不已。本文将为您介绍如何利用条件格式来美化图表…

使用ResponseBodyAdvice做分页处理

目录 父pom文件 pom文件 配置文件 MyResponseBodyAdvice ResponseDto MyBatisConfig UsersController UsersMapper UserMapper.xml 结果 父pom文件 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/PO…

【JAVA】七大排序算法(图解)

稳定性&#xff1a; 待排序的序列中若存在值相同的元素&#xff0c;经过排序之后&#xff0c;相等元素的先后顺序不发生改变&#xff0c;称为排序的稳定性。 思维导图&#xff1a; &#xff08;排序名称后面蓝色字体为时间复杂度和稳定性&#xff09; 1.直接插入排序 核心思…

E1. PermuTree (easy version) Codeforces Round 890 (Div. 2) E1

题目大意&#xff1a; 给出一个n个点的树&#xff0c;所有点权a[i]构成一个n的排列&#xff0c;点权可以任意分配给点&#xff0c;问最多有多少对u,v满足a[u]<lca(a[u],a[v])<a[v] 2<n<5000 思路&#xff1a;首先&#xff0c;如果两个点的lca是他俩其中之一&…

Elasticsearch之kibana相关命令

1.中文分词器相关命令 2.拼音分词器相关命令

vuejs 设计与实现 - 双端diff算法

我们介绍了简单 Diff 算法的实现原理。简单 Diff 算法利用虚拟节点的 key 属性&#xff0c;尽可能地复用 DOM元素&#xff0c;并通过移动 DOM的方式来完成更新&#xff0c;从而减少不断地创建和销毁 DOM 元素带来的性能开销。但是&#xff0c;简单 Diff 算法仍然存在很多缺陷&a…

设备使用RTMP推流到安防监控EasyCVR视频汇聚平台,为何只有FLV格式无法播放?

TSINGSEE青犀视频安防监控视频汇聚平台EasyCVR基于云边端一体化架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制、语音对讲、智能分析等功能。 智能视频监控平台EasyCVR可…

镭速-解析极速文件传输软件

每天都要传输文件&#xff0c;让人心烦意乱&#xff0c;如果有一种最快的文件传输软件&#xff0c;就能节约很多时间&#xff0c;那么针对用户的这个需求&#xff0c;我们来介绍一下镭速的文件传输软件&#xff0c;看它是否真的那么快&#xff0c;快得让你惊讶。 文件传输要怎么…

vue 09 多组件项目 todolist ,组件编程三部曲,函数方式传递消息,ref,自定义事件传递消息

分析项目组件构成&#xff1a; 组件编程三部曲&#xff1a; 第一步.先创建四个需要用到的组件 由于header&#xff0c;footer&#xff0c;list&#xff0c;item都和html文件或者是js的关键字有冲突&#xff0c;所以建议改成两个单词的名字&#xff0c;MyHeader&#xff0c;My…

2542. 最大子序列的分数

题目描述&#xff1a; 主要思路&#xff1a; 这是一个堆的题目&#xff0c;首先将2里边的下标按照数值递减的顺序进行重新排列。依次遍历2的下标同时加上1的数值&#xff0c;堆里边存储1的大小。 class Solution { public:long long maxScore(vector<int>& nums1, …

Leetcode | 有效的括号、最长有效括号

一、有效的括号 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&#xff1a; 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应…

用node.js搭建一个视频推流服务

由于业务中有不少视频使用的场景&#xff0c;今天来说说如何使用node完成一个视频推流服务。 先看看效果&#xff1a; 这里的播放的视频是一个多个Partial Content组合起来的&#xff0c;每个Partial Content大小是1M。 一&#xff0c;项目搭建 &#xff08;1&#xff09;初…