Python实现自动化邮件发送过程详解

Python实现自动化邮件发送过程详解

简介

本文将为读者介绍如何使用Python实现自动化邮件发送,通过代码编写能够大量减轻我们手工发送邮件的工作量,提高工作效率。本文将从以下几个方面进行介绍:

  • 准备工作:Python虚拟环境、SMTP协议、邮件服务等
  • 实现发送文本邮件:使用smtplib模块发送邮件
  • 实现发送HTML邮件:使用email.mime模块发送HTML格式邮件
  • 实现发送附件邮件:使用email.mime模块发送附件

准备工作

Python虚拟环境

在使用Python进行开发时,强烈建议使用虚拟环境隔离不同项目所依赖的模块,以免因某个模块升级导致不同项目出现冲突。

在命令行执行以下命令创建虚拟环境:

python -m venv venv

激活虚拟环境:

  • Windows:venv\Scripts\activate.bat
  • Linux/Mac:source venv/bin/activate

SMTP协议

SMTP(Simple Mail Transfer Protocol)是一种用于发送和传递电子邮件的标准协议。在使用Python发送邮件时,需要对SMTP协议进行了解。

SMTP协议使用的端口有:

  • 25:普通SMTP端口,用于最简单的邮件传输
  • 587:加密SMTP端口,用于加密的邮件传输
  • 465:SSL SMTP端口,用于SSL加密的邮件传输

邮件服务

使用Python发送邮件时,需要在邮件服务商处申请开通SMTP服务。以163邮箱为例,步骤如下:

  1. 打开“设置”页面
  2. 点击“客户端授权密码”,开启该选项
  3. 记录下授权码,稍后将用到

实现发送文本邮件

发送文本邮件时,可以使用Python标准库中的smtplib模块。

示例代码:

import smtplib
from email.mime.text import MIMEText
from email.header import Header

# 邮件内容
message_text = 'Hello world!'

# 邮件信息
message = MIMEText(message_text, 'plain', 'utf-8')
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名', 'utf-8')
message['Subject'] = Header('邮件主题', 'utf-8')

# 发送邮件
smtp_host = 'smtp.163.com'
smtp_port = 465
smtp_user = '发送者邮箱地址'
smtp_password = '发送者的授权码'

smtp_server = smtplib.SMTP_SSL(smtp_host, smtp_port)
smtp_server.login(smtp_user, smtp_password)
smtp_server.sendmail(smtp_user, ['接收者邮箱地址'], message.as_string())
smtp_server.quit()

在编写邮件信息时,可以使用email.header模块对邮件头进行编码。

实现发送HTML邮件

除了文本邮件,还可以发送HTML格式的邮件。需要使用Python标准库中的email.mime模块。

示例代码:

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

# 邮件信息
message = MIMEMultipart()
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名', 'utf-8')
message['Subject'] = Header('邮件主题', 'utf-8')

# 邮件正文
html = '<html><body><h1>Hello world!</h1><img src="cid:img1"></body></html>'
message_html = MIMEText(html, 'html', 'utf-8')
message.attach(message_html)

# 图片附件
with open('image.jpg', 'rb') as f:
    image_data = f.read()

img = MIMEImage(image_data, name='image.jpg')
img.add_header('Content-ID', '<img1>')
message.attach(img)

# 发送邮件
smtp_host = 'smtp.163.com'
smtp_port = 465
smtp_user = '发送者邮箱地址'
smtp_password = '发送者的授权码'

smtp_server = smtplib.SMTP_SSL(smtp_host, smtp_port)
smtp_server.login(smtp_user, smtp_password)
smtp_server.sendmail(smtp_user, ['接收者邮箱地址'], message.as_string())
smtp_server.quit()

HTML邮件中,需要将HTML内容作为MIMEText附加到MIMEMultipart中。

实现发送附件邮件

除了文本和HTML邮件,还可以发送附件。需要使用Python标准库中的email.mime模块。

示例代码:

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
from email.header import Header

# 邮件信息
message = MIMEMultipart()
message['From'] = Header('发件人姓名', 'utf-8')
message['To'] = Header('收件人姓名', 'utf-8')
message['Subject'] = Header('邮件主题', 'utf-8')

# 邮件正文
message_text = 'Hello world!'
message.attach(MIMEText(message_text, 'plain', 'utf-8'))

# 附件
with open('file.txt', 'rb') as f:
    attachment_data = f.read()

file = MIMEApplication(attachment_data, name='file.txt')
file.add_header('Content-Disposition', 'attachment', filename='file.txt')
message.attach(file)

# 发送邮件
smtp_host = 'smtp.163.com'
smtp_port = 465
smtp_user = '发送者邮箱地址'
smtp_password = '发送者的授权码'

smtp_server = smtplib.SMTP_SSL(smtp_host, smtp_port)
smtp_server.login(smtp_user, smtp_password)
smtp_server.sendmail(smtp_user, ['接收者邮箱地址'], message.as_string())
smtp_server.quit()

附件邮件中,需要将附件作为MIMEApplication附加到MIMEMultipart中,并使用Content-Disposition头指定附件的文件名。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现自动化邮件发送过程详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • 关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题

    针对“关于Pycharm配置翻译插件Translation报错更新TTK失败不能使用的问题”,我将为您提供以下完整攻略: 问题描述 在Pycharm中配置翻译插件Translation时,有用户反馈遇到如下问题: 更新TTK失败 点击翻译按钮时报错 这些问题都是由于pyttk库版本的问题引起的,现在,我们将分别对这两个问题进行解答。 解决更新TTK失败问题 …

    python 2023年6月5日
    00
  • Python读csv文件去掉一列后再写入新的文件实例

    以下是详细讲解“Python读csv文件去掉一列后再写入新的文件实例”的完整攻略: 1. 导入必要的库 在处理csv文件时,需要使用Python内置的csv库来读取和写入文件,因此第一步就是导入csv库: import csv 2. 读取csv文件 接下来,我们需要使用csv库中的csv.reader()方法来读取csv文件。例如,假设我们要读取名为inpu…

    python 2023年6月3日
    00
  • Python3安装pip工具的详细步骤

    下面是Python3安装pip工具的详细步骤: 步骤一:确认Python3环境已经安装 如果已经安装了Python3环境,可以直接跳过这一步。如果没有安装,可以根据操作系统的不同,选择适合自己的安装包进行安装。 步骤二:下载pip安装文件 根据您的操作系统下载对应版本的pip安装文件。可以从pip官方下载站点上下载相应版本的pip工具的安装文件。例如,如果您…

    python 2023年5月14日
    00
  • 使用 Pushes Create Api with Python 将文件上传/推送到 Azure Devops Repo 时出现无效的 Json 错误

    【问题标题】:Invalid Json error when Uploading/pushing a file to Azure Devops Repo using Pushes Create Api with Python使用 Pushes Create Api with Python 将文件上传/推送到 Azure Devops Repo 时出现无效的 …

    Python开发 2023年4月6日
    00
  • 基于Python实现最新房价信息的获取

    基于Python实现最新房价信息的获取 在本教程中,我们将介绍如何使用Python获取最新的房价信息。我们将使用的requests、BeautifulSoup和pandas库来实现这个功能。以下是一个完整攻略,包含两个示例。 步骤1:获取房价信息 首先,我们需要获取最新的房价信息。我们可以使用requests库发送HTTP请求,并使用BeautifulSou…

    python 2023年5月15日
    00
  • Python 实现try重新执行

    实现 try 重新执行可以通过使用 Python 的异常处理机制来实现。在处理异常时,使用循环语句来实现 try 重新执行的功能,即如果 try 语句块中的代码抛出异常,则重新执行 try 语句块。以下是实现 try 重新执行的完整攻略: 1.编写需要尝试重新执行的代码块。在代码块之前,使用 try 语句块来尝试执行代码块。如果代码块中的代码抛出异常,则执行…

    python 2023年5月13日
    00
  • python内置数据类型使用方法和继承关系

    Python内置数据类型使用方法和继承关系 Python内置数据类型包括基本数据类型和复合数据类型,其中基本数据类型包括数字(int、float、complex)、布尔(bool)、空值(NoneType),复合数据类型包括字符串(str)、列表(list)、元组(tuple)、集合(set)、字典(dict)。 数字 Python中的数字有三种类型:整数(…

    python 2023年6月3日
    00
  • Python实现SVM支持向量机的示例代码

    下面我来为你详细讲解Python实现SVM支持向量机的示例代码的完整攻略。 SVM简介 SVM(Support Vector Machine)是一种用于分类、回归以及异常检测的机器学习算法,它可以将数据集映射到高维空间中,从而将非线性问题转化为线性问题。SVM的核心是找到最大间隔超平面,这个过程就是优化超平面离支持向量最远的距离,而支持向量是离超平面最近的样…

    python 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部