使用Python发送电子邮件:轻松实现自动化沟通

news2024/11/28 3:29:45

哈喽,大家好,我是木头左!

1. 为什么使用Python发送电子邮件?

在当今这个信息爆炸的时代,电子邮件已经成为了日常生活中不可或缺的一部分。无论是工作还是生活,都可能需要通过电子邮件与他人进行沟通。而Python作为一种简单易学、功能强大的编程语言,正逐渐成为了自动化处理邮件的首选工具。那么,为什么要使用Python来发送电子邮件呢?

1.1 提高工作效率

通过Python发送电子邮件,可以实现自动化处理邮件,从而大大提高工作效率。例如,可以编写一个程序,自动将收到的新邮件分类到不同的文件夹中,或者自动回复一些常见的问题。这样,就可以将更多的精力投入到更重要的工作中去。

1.2 减少人为错误

人工处理邮件的过程中,难免会出现一些错误,如遗漏、误操作等。而使用Python发送电子邮件,可以有效地减少这些错误。因为程序是按照预设的规则来执行的,只要规则设置得当,就可以避免这些错误。

1.3 方便跨平台使用

Python是一种跨平台的编程语言,可以在Windows、Mac和Linux等操作系统上运行。这意味着,无论使用的是哪种操作系统,都可以通过Python来发送电子邮件。

2. Python发送电子邮件的基本原理

要使用Python发送电子邮件,需要了解其基本原理。简单来说,Python发送电子邮件的过程可以分为以下几个步骤:

  1. 配置SMTP服务器和邮箱账户信息;
  2. 创建邮件内容;
  3. 使用SMTP协议发送邮件;
  4. 接收邮件服务器的响应。

3. 使用Python发送电子邮件的常用库

在Python中,有很多库可以帮助发送电子邮件。其中,最常用的两个库分别是smtplib和email。下面,将分别介绍这两个库的使用方法。

3.1 smtplib库

smtplib库是Python内置的一个用于发送电子邮件的库。通过这个库,可以连接到SMTP服务器,然后使用SMTP协议发送邮件。以下是一个简单的使用smtplib库发送邮件的示例:

import smtplib
from email.mime.text import MIMEText

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEText('Hello, this is a test email sent by Python.')
msg['Subject'] = 'Test Email'
msg['From'] = email_user
msg['To'] = 'recipient@example.com'

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

3.2 email库

email库是一个用于处理电子邮件的第三方库。通过这个库,可以更方便地创建邮件内容,以及处理邮件的各种属性。以下是一个简单的使用email库发送邮件的示例:

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

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email'

body = 'Hello, this is a test email sent by Python.'
msg.attach(MIMEText(body, 'plain'))

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

4. 使用Python发送带附件的电子邮件

除了发送纯文本邮件外,还可以使用Python发送带附件的电子邮件。在Python中,可以使用email库的MIMEBase类来处理附件。以下是一个简单的使用email库发送带附件的邮件的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email with Attachment'

body = 'Hello, this is a test email sent by Python with an attachment.'
msg.attach(MIMEText(body, 'plain'))

# 添加附件
filename = 'example.txt'
attachment = open(filename, 'rb')

part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)

msg.attach(part)

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

5. 使用Python发送HTML格式的电子邮件

除了发送纯文本邮件外,还可以使用Python发送HTML格式的电子邮件。在Python中,可以使用email库的MIMEText类来处理HTML格式的邮件内容。以下是一个简单的使用email库发送HTML格式邮件的示例:

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

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email with HTML Content'

html = '''\n<html>
  <head></head>
  <body>
    <p>Hello, this is a test email sent by Python with HTML content.</p>
  </body>
</html>
'''
msg.attach(MIMEText(html, 'html'))

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

6. 使用Python发送带图片的电子邮件

除了发送纯文本和HTML格式的邮件外,还可以使用Python发送带图片的电子邮件。在Python中,可以使用email库的MIMEImage类来处理图片附件。以下是一个简单的使用email库发送带图片的邮件的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email import encoders

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email with Image Attachment'

body = 'Hello, this is a test email sent by Python with an image attachment.'
msg.attach(MIMEText(body, 'plain'))

# 添加图片附件
filename = 'example.jpg'
with open(filename, 'rb') as f:
    img_data = f.read()
    image = MIMEImage(img_data)
    image.add_header('Content-ID', '<image1>')
    msg.attach(image)

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

7. 使用Python发送带附件和图片的电子邮件

在前面的示例中,已经分别介绍了如何使用Python发送带附件和带图片的电子邮件。实际上,可以同时发送附件和图片。在Python中,可以将附件和图片添加到同一个MIMEMultipart对象中,然后使用SMTP协议发送邮件。以下是一个简单的使用email库发送带附件和图片的邮件的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email.mime.image import MIMEImage
from email import encoders

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email with Attachment and Image'

body = 'Hello, this is a test email sent by Python with an attachment and an image.'
msg.attach(MIMEText(body, 'plain'))

# 添加附件
filename = 'example.txt'
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)
msg.attach(part)

# 添加图片附件
filename = 'example.jpg'
with open(filename, 'rb') as f:
    img_data = f.read()
    image = MIMEImage(img_data)
    image.add_header('Content-ID', '<image1>')
    msg.attach(image)

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

8. 使用Python发送带多个附件的电子邮件

在前面的示例中,已经介绍了如何使用Python发送带附件的电子邮件。实际上,可以同时发送多个附件。在Python中,可以将多个附件添加到同一个MIMEMultipart对象中,然后使用SMTP协议发送邮件。以下是一个简单的使用email库发送带多个附件的邮件的示例:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.base import MIMEBase
from email import encoders

# 配置SMTP服务器和邮箱账户信息
smtp_server = 'smtp.example.com'
smtp_port = 587
email_user = 'your_email@example.com'
email_password = 'your_email_password'

# 创建邮件内容
msg = MIMEMultipart()
msg['From'] = email_user
msg['To'] = 'recipient@example.com'
msg['Subject'] = 'Test Email with Multiple Attachments'

body = 'Hello, this is a test email sent by Python with multiple attachments.'
msg.attach(MIMEText(body, 'plain'))

# 添加附件列表
attachments = ['example1.txt', 'example2.txt', 'example3.txt']
for filename in attachments:
    attachment = open(filename, 'rb')
    part = MIMEBase('application', 'octet-stream')
    part.set_payload((attachment).read())
    encoders.encode_base64(part)
    part.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)
    msg.attach(part)

# 使用SMTP协议发送邮件
with smtplib.SMTP(smtp_server, smtp_port) as server:
    server.starttls()
    server.login(email_user, email_password)
    server.sendmail(email_user, msg['To'], msg.as_string())

我是木头左,感谢各位童鞋的点赞、收藏,我们下期更精彩!

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

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

相关文章

springboot项目mapper无法自动装配,未找到 ‘userMapper‘ 类型的Bean解决办法.

一开始我看到了这个回答&#xff1a;springboot项目mapper无法自动装配&#xff0c;未找到 ‘userMapper‘ 类型的 Bean解决办法&#xff08;含报错原因&#xff09;_无法自动装配。找不到 usermapper 类型的 bean。-CSDN博客 mapper无法自动装配&#xff0c;未找到 ‘userMap…

Open WebUI的SearXNG网络搜索配置【403报错解决方法】

1.拉取SearXNG镜像 docker pull searxng/searxng 2.在Docker Desktop的Images界面中启动searxng容器 3.查看searxng是否部署成功 在Docker Desktop的Containers界面中&#xff0c;查看searxgn暴露的端口。 http://localhost:31292/ 4.修改settings.yml配置参数 在Docker De…

python如何判断图片是否为空

如下所示&#xff1a; import cv2im cv2.imread(2.jpg) if im is None:print("图像为空") # cv2.imshow("ss", im) # cv2.waitKey(0)

【Spine学习11】之 战士攻击动作 思路总结(手动调整贝塞尔曲线实现前快后慢)

拿到一份psd文件先观察检查一下图片顺序有没有问题&#xff0c; 重点看一下人物的腿部分层&#xff0c;&#xff08;如果是大小腿分开画的就网格可打可不打&#xff0c;如果是连在一起画的&#xff0c;那必须打网格&#xff09; 拿着剑的时候剑和手的层级有没有错位&#xff0c…

如何一步一步将Python中的应用打包成安卓的APK安装包文件

一、首先&#xff0c;按照如下链接操作 Python 应用打包成 APK【全流程】_python打包成apk-CSDN博客 二、运行 buildozer init会报错buildozer命令找不到&#xff0c;明明已经安装 解决方法&#xff1a; 这里重新创建一个conda环境 Installation — Buildozer 0.11 docum…

Codepen Three.js环境依赖配置

Codepen Three.js环境依赖配置 前言 如果想在CodePen环境写Three.js依赖的项目&#xff0c;环境搭建可以参考该Codepen项目: Chill the lion 详细 打开设置可以看到以下配置 更多项目参考 1. Chill the Lion Chill the Lion 是一个基于 ThreeJS 制作的 WebGL 示例。它由…

基于llama3-8B-instruct的调用部署以及lora微调

基于llama3-8B-instruct的调用部署以及lora微调 1 Llama-3-8B-Instruct 基于FastApi 部署调用2 LLaMA3-8B-Instruct langchain 接入3 LaMA3-8B-Instruct 基于streamlit的web demo部署LLaMA3-8B-Instruct Lora 微调参考&#xff1a; 1 Llama-3-8B-Instruct 基于FastApi 部署调用…

Docker Desktop进入界面时一直转圈的解决办法记录

我的win10版本如下&#xff0c;是支持安装的&#xff0c;不支持安装的&#xff0c;可以先升级系统版本&#xff1a; 起初是因为运行Docker Desktop时一直转圈&#xff0c;无法进入主面板&#xff0c;百度之&#xff0c;需要安装hype-v环境&#xff0c;找到以下 勾选Hyper-V下的…

linux日志管理之journalctl命令

一、日志查询 1.输出所有日志或按相关要求输出 输出所有日志 #journalctl查看实时日志 #journalctl -f查看最后n行 #journalctl -n 10不分页显示 #journalctl --no-pager适合阅读模式 #journalctl -p 3 -o json-pretty 查看内核日志 #journalctl -k 2.按服务查询 #journal…

【MySQL进阶之路 | 高级篇】InnoDB搜索引擎行格式

1. COMPACT行格式 COMPACT行格式是MySQL5.1的默认行格式.其结构示意图如下. 大体可以分为两部分. 记录的额外信息.这里面有包括变长字段长度列表&#xff0c;NULL值列表和记录头信息.记录的真实数据. (1).变长字段长度列表 MySQL支持一些变长的数据类型.比如VARCHAR(m), VA…

【SCAU数据挖掘】数据挖掘期末总复习题库应用题及解析

1. 给定圆的半径为e &#xff0c;令 MinPts3&#xff0c;考虑下面两幅图。 &#xff08;1&#xff09;哪些对象是核心对象? m,p,o,r(因为这些核心对象在半径e的范围内都至少包含MinPts3个对象) &#xff08;2&#xff09;哪些对象是直接密度可达的? 对象q是…

node: /lib64/libm.so.6: version `GLIBC_2.27‘ not found (required by node)

node: /lib64/libm.so.6: version GLIBC_2.27‘ not found 错误信息解决方案操作步骤&#xff1a;1、下载node版本2、上传服务器3、解压4、将文件名改短5、脚本新增6、重新加载环境变量source /etc/profile7、配置阿里云镜像仓库8、服务器打包完成 错误信息 这个错误信息表示…

论文解读:Pandora: 朝着结合自然语言动作与视频状态的通用世界模型发展

论文《Pandora: 朝着结合自然语言动作与视频状态的通用世界模型发展》探索了构建一个高度集成的AI系统&#xff0c;旨在理解自然语言指令并在视频所代表的视觉环境中执行相应操作&#xff0c;从而推进对复杂动态场景的建模与预测能力。以下是该论文的关键点和贡献的详细解读&am…

聊聊JSON

引言 JSON的概念 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它基于JavaScript的一个子集&#xff0c;但独立于语言&#xff0c;这意味着它可以被许多编程语言轻松解析。JSON的简洁性和易读性使其成为Web开发中数据交换的…

煤矿智能巡检机器人:推动煤矿行业变革的关键力量

目前我国煤炭资源总量达到了2078.85亿吨&#xff0c;已探明储量为1432亿吨&#xff0c;煤矿能源现阶段还是我国重要的基础能源。而煤矿生产作业存在巨大危险&#xff0c;主要包括高温、高压、燃爆和有毒气体等环境因素&#xff0c;同时机械设备运转过程中潜藏着重大风险。这些危…

MySQL 核心模块揭秘 | 21 期 | 行锁 (1) 快速加锁

行锁有两种加锁逻辑&#xff0c;这一期我们聊聊其中之一的快速加锁。 作者&#xff1a;操盛春&#xff0c;爱可生技术专家&#xff0c;公众号『一树一溪』作者&#xff0c;专注于研究 MySQL 和 OceanBase 源码。 爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用&a…

【深海王国】小学生都能做的APP?AppInventor、BLE蓝牙、Arduino联合开发你的第一个手机远程控制程序(7)

Hi~ (o^^o)♪, 各位深海王国的同志们&#xff0c;早上下午晚上凌晨好呀~ 辛勤工作的你今天也辛苦啦(/≧ω) 今天大都督依旧为大家带来小学生都能学会的APP制作教程&#xff0c;帮你一周内快速开发一款可以和单片机无线通讯的手机蓝牙APP&#xff0c;let’s go&#xff01; &a…

Python13 时间格式转换

在Python中&#xff0c;时间格式转换通常指的是将日期和时间数据从一种表示形式转换成另一种。这种转换经常使用Python的datetime和time模块来实现。这些模块提供了多种工具&#xff0c;可以帮助用户将时间表示为字符串、时间戳&#xff0c;或是更加结构化的datetime对象等多种…

Android-Framework:Handler全解析,看完这篇还不懂请给我寄刀片

//【1】拿到队列头部 Message p mMessages; boolean needWake; //【2】如果消息不需要延时&#xff0c;或者消息的执行时间比头部消息早&#xff0c;插到队列头部 if (p null || when 0 || when < p.when) { // New head, wake up the event queue if blocked. msg.next…

下班时间如何安排?

随着互联网的飞速发展和数字化时代的来临&#xff0c;越来越多的人开始探索除了主业以外的赚钱途径&#xff0c;以增加收入来源。本文将为您介绍几种当前热门的高薪副业项目&#xff0c;包括网络任务赚钱、开设个人网店、电商导购推广、在线辅导教学、技能变现服务、视频创作分…