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

yizhihongxing

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日

相关文章

  • python 中的np.zeros()和np.ones()函数详解

    Python中的np.zeros()和np.ones()函数详解 np.zeros()和np.ones()都是NumPy中用于创建数组的函数,本文将详细介绍其用法。 np.zeros() np.zeros()函数用于创建所有元素都为0的数组。函数的语法如下: numpy.zeros(shape, dtype=float, order=’C’) 参数说明: s…

    python 2023年5月14日
    00
  • Python面向对象编程基础解析(一)

    针对“Python面向对象编程基础解析(一)”这篇文章,以下是详细的攻略: Python面向对象编程基础解析(一)——概念篇 1. 什么是面向对象编程(Object-oriented Programming)? 首先,本文对面向对象编程的定义进行了介绍,即,将数据和操作数据的方法封装在一起,形成一个对象。在面向对象编程中,我们对于对象中的数据和方法的访问是通…

    python 2023年5月13日
    00
  • Python全栈之基本数据类型

    Python全栈之基本数据类型攻略 1. 基本数据类型 Python 中具有以下基本数据类型:- 整数 (int)- 浮点数 (float)- 布尔值 (bool)- 字符串 (str) 整数 (int) 整数是没有小数部分的数字。在 Python 中,整数可以表示为十进制、八进制、十六进制等形式。我们可以使用内置的 type() 函数来查看变量的数据类型。…

    python 2023年5月13日
    00
  • Python Twisted – Windows 7 命令行

    【问题标题】:Python Twisted – Windows 7 Command LinePython Twisted – Windows 7 命令行 【发布时间】:2023-04-02 17:50:01 【问题描述】: 我正在尝试在 Windows 7 中安装 PunJab (https://github.com/twonds/punjab) 我安装了 …

    Python开发 2023年4月8日
    00
  • 详解如何修改python中字典的键和值

    修改 Python 字典中的键和值是一个常见且必备的操作,下面就来详细讲解如何进行修改。 修改字典的键 在 Python 中,修改字典的键可以使用 pop 和 update 两种方法。 pop 方法 pop 方法用于删除并返回字典中指定键对应的值,我们可以将其与新增键值对的方法相结合,实现字典键的修改。示例如下: # 定义一个字典 my_dict = {‘k…

    python 2023年5月13日
    00
  • Python selenium 自动化脚本打包成一个exe文件(推荐)

    Python selenium 是一个强大的自动化测试工具,可以帮助开发人员快速构建高效的脚本,提高项目的质量和效率。但是在实际应用中,需要将脚本打包成一个exe文件,以便在其他机器上运行,本文主要介绍如何实现 Python selenium 自动化脚本打包成一个 exe 文件的操作方法。 环境准备 安装 Python2.7 或 Python3.6 安装 P…

    python 2023年6月6日
    00
  • python+opencv实现论文插图局部放大并拼接效果

    下面详细讲解“python+opencv实现论文插图局部放大并拼接效果”的完整攻略。 1. 准备工作 首先,需要安装Python和OpenCV库。可以通过pip或conda来安装OpenCV库: pip install opencv-python 或者 conda install opencv 2. 图像放大与拼接 对于图像局部放大与拼接的实现,可分为以下几…

    python 2023年5月18日
    00
  • Python 垃圾回收机制详解

    Python 垃圾回收机制详解 什么是垃圾回收机制 Python 中的垃圾回收机制是自动的内存管理系统,可以帮助开发人员避免手动管理内存带来的问题。在 Python 中,通过垃圾回收机制来监控和清理程序中不再需要的对象。 Python 的垃圾回收机制的实现 引用计数 Python 中最基本的垃圾回收策略是引用计数,即解释器维护每个对象的引用计数,当计数为 0…

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