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日

相关文章

  • Python K最近邻从原理到实现的方法

    以下是关于“Python K最近邻从原理到实现的方法”的完整攻略: 简介 K最近邻(K-Nearest Neighbors,KNN)是一种基于实例的学习算法,它可以用于分类和回归任务。在本教程中,我们将介绍KNN算法的原理和Python实现方法,并提供两个示例说明。 KNN算法原理 KNN算法的基本思想是:对于一个新的数据点,找到与其最近的K个数据点,然后根…

    python 2023年5月14日
    00
  • python实现学生信息管理系统

    Python实现学生信息管理系统 简介 学生信息管理系统可以统计、查询、修改、删除学生信息,为学校管理提供便利。本文将介绍如何使用Python实现学生信息管理系统。 功能 添加学生信息 查询学生信息 修改学生信息 删除学生信息 环境搭建 安装Python3 安装pymysql pip install pymysql 数据库设计 学生信息表:student 字…

    python 2023年5月19日
    00
  • python常用的各种排序算法原理与实现方法小结

    排序算法是计算机科学中的基本问题之一。在Python中,我们可以使用各种排序算法对数据进行排序。以下是Python常用的各种排序算法原理与实现方法的小结。 冒泡排序 冒泡排序是一种简单的排序算法,它重复地遍历要排序的列表,比较相邻的两个元素,并按照大小交换它们的位置,直到整个列表都是有序的。以下是冒泡排序的Python实现: def bubble_sort(…

    python 2023年5月13日
    00
  • Python利用Selenium实现弹出框的处理

    下面为你详细讲解“Python利用Selenium实现弹出框的处理”的完整攻略。 一、前置知识 在学习之前,你需要掌握以下知识: Python编程语言基础; Selenium自动化测试工具的基础使用方法; 网页弹出框的基础概念。 二、Python利用Selenium实现弹出框的处理 1. 弹出框的种类 网页弹出框有多种类型,常见的有三种: alert框 co…

    python 2023年6月5日
    00
  • Python多线程同步—文件读写控制方法

    Python多线程同步—文件读写控制方法 在Python多线程编程过程中,为了避免多线程读写同一个文件产生的竞争,我们需要实现线程同步,即一次只有一个线程能够访问文件。下面介绍几种线程同步的文件读写控制方法。 1. 使用线程锁 线程锁是最常见的线程同步方法,具体实现是在读写文件操作之前加上锁,进入读写操作之后再释放锁,这样保证同一时间内只有一个线程能够访…

    python 2023年5月18日
    00
  • 9个提高 Python 编程的小技巧

    9个提高 Python 编程的小技巧 Python 是一门易学易用且功能强大的编程语言。本篇攻略列举了9个小技巧,让您在日常 Python 编程中更高效、更舒适。 1. 使用虚拟环境 虚拟环境是为 Python 应用创建独立的环境,用于隔离该应用所依赖的 Python 包,防止与其他应用程序冲突。通过虚拟环境,您可以在同一台机器上为不同的 Python 应用…

    python 2023年5月14日
    00
  • python commands模块的适用方式

    Python中的commands模块已经在Python 2.6版本中被弃用,取而代之的是subprocess模块。subprocess模块提供的API更加强大、更加安全、更加可靠,如果你必须使用commands模块,那么也应该尝试升级你的Python版本。 以下是commands模块的适用方式: 导入commands模块 首先,我们需要导入commands模…

    python 2023年5月14日
    00
  • python Popen 获取输出,等待运行完成示例

    Python中的subprocess模块允许我们在Python中创建新的进程,与外部进程进行交互并获取执行结果。其中,Popen()是最基本的函数之一,它可以启动一个子进程,并返回一个Popen对象,该对象可用于操作子进程。 下面是获取Popen输出、等待进程完成的一般步骤: 导入subprocess模块 import subprocess 使用Popen启…

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