详解Python发送email的三种方式

下面是“详解Python发送email的三种方式”的完整实例教程。

前言

无论是个人还是企业,发送邮件是经常需要的一个功能,Python提供了多种发送邮件的方式,本文将详细介绍三种方式。

方式一:使用smtplib库发送邮件

代码示例

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

# 邮件配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_ssl = True
smtp_user = '123456@qq.com'
smtp_password = 'password'  # 邮箱授权码

# 发送邮件信息
sender = '123456@qq.com'
receivers = ['78910@qq.com']

# 邮件正文
mail_content = 'Python 邮件发送测试...'
message = MIMEText(mail_content, 'plain', 'utf-8')

# 邮件信息配置
message['From'] = Header("发件人", 'utf-8')
message['To'] = Header("收件人", 'utf-8')
message['Subject'] = Header("Python 邮件测试", 'utf-8')

# 发送邮件
try:
    smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
    smtpObj.login(smtp_user, smtp_password)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 邮件发送失败: ", e)

示例说明

  • smtplib是Python自带发送邮件的类库,在发送邮件前需先初始化邮件配置信息,包括SMTP服务器地址、端口号、SSL加密等;
  • MIMEText是邮件正文内容的类,可以指定邮件格式和编码格式;
  • Header是把字符串转成可以在邮件中用的格式;
  • 要发送邮件,需要在邮件对象上设置发送者、接受者、标题等信息;
  • SMTP类实现了SMTP协议发送邮件的方法,调用sendmail()方法发送邮件,在发送邮件前需要调用login()方法进行邮箱授权访问验证。

方式二:使用email库发送邮件

代码示例

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

# 邮件配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_ssl = True
smtp_user = '123456@qq.com'
smtp_password = 'password'  # 邮箱授权码

# 发送邮件信息
sender = '123456@qq.com'
receivers = ['78910@qq.com']

# 邮件正文
mail_content = 'Python 邮件发送测试...'
message = MIMEMultipart()
text = MIMEText(mail_content)
message.attach(text)

# 添加一张图片
with open('test.jpg', 'rb') as f:
    img_data = f.read()
img = MIMEImage(img_data)
img.add_header('Content-ID', '<test.jpg>')
message.attach(img)

# 邮件信息配置
message['From'] = '发件人'
message['To'] = '收件人'
message['Subject'] = 'Python 邮件测试'

# 发送邮件
try:
    smtpObj = smtplib.SMTP_SSL(smtp_server, smtp_port)
    smtpObj.login(smtp_user, smtp_password)
    smtpObj.sendmail(sender, receivers, message.as_string())
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 邮件发送失败: ", e)

示例说明

  • MIMEMultipart是邮件对象,可以设置邮件正文、图片、附件等;
  • MIMEText是文本类型邮件内容,MIMEImage是图片类型邮件内容;
  • 可以通过add_header()方法添加图片的Content-ID,在HTML中可以通过<img src="cid:content-id">标签来显示图片;
  • 通过smtplib.SMTP_SSL()方法创建SMTP连接,调用login()方法进行登录授权;
  • sendmail()方法实现邮件发送。

方式三:使用yagmail库发送邮件

代码示例

import yagmail

# 配置信息
smtp_server = 'smtp.qq.com'
smtp_port = 465
smtp_user = '123456@qq.com'
smtp_password = 'password'  # 邮箱授权码

# 发送邮件信息
receiver = '78910@qq.com'
subject = 'Python 邮件测试'
contents = [
    'Python 邮件发送测试...',
    '附件:test.jpg'
]
attachments = [
    'test.jpg'
]

# 发送邮件
try:
    yag = yagmail.SMTP(user=smtp_user, password=smtp_password, host=smtp_server, port=smtp_port)
    yag.send(to=receiver, subject=subject, contents=contents, attachments=attachments)
    print("邮件发送成功")
except Exception as e:
    print("Error: 邮件发送失败: ", e)

示例说明

  • yagmail是一个简单易用的发送邮件库,只需要设置SMTP服务器、登录用户名和密码即可;
  • SMTP()方法用于创建SMTP连接和登录授权;
  • send()方法发送邮件,可以设置收件人、标题、正文、附件等。

以上三种Python发送邮件的方式都是比较常用且简单的方式。根据实际业务需求,选择适合的方式发送邮件即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Python发送email的三种方式 - Python技术站

(1)
上一篇 2023年5月13日
下一篇 2023年5月13日

相关文章

  • Python线性网络实现分类糖尿病病例

    Python线性网络实现分类糖尿病病例攻略 1. 介绍 本攻略将介绍如何使用Python实现一个线性神经网络来对糖尿病病例进行分类。经过训练后,该神经网络可以根据患者的人口学资料(例如年龄、BMI指数等)来预测其是否患有糖尿病。 本教程基于Python 3和NumPy库,并使用了Jupyter Notebook编写。我们将使用Pima Indians Dia…

    python 2023年6月3日
    00
  • Python函数使用的相关练习题分享

    Python函数使用的相关练习题分享 在 Python 编程中,函数是至关重要的组成部分。通过函数,我们能够将代码模块化,使得代码更加清晰易懂,并能够更加方便地进行复用。本文将分享一些 Python 函数使用的相关练习题,并提供相应的解析。 知识点回顾 在介绍练习题之前,我们先来回顾一下 Python 函数的一些重要知识点。 定义函数 定义函数的一般格式如下…

    python 2023年6月5日
    00
  • 详解python实现多张多格式图片转PDF并打包成exe

    标题 首先我们需要给这篇攻略添加一个标题,以便读者能够清楚知道我们要介绍的内容: 详解python实现多张多格式图片转PDF并打包成exe攻略 简介 在正式开始介绍实现方法之前,我们需要先简单介绍一下这个攻略的目的和优点: 这篇攻略主要介绍如何使用Python将多张多格式的图片文件转换成PDF文件,并将其打包成exe文件,方便在其他电脑上使用。Python作…

    python 2023年6月5日
    00
  • Python遍历文件夹和读写文件的实现代码

    让我来给你详细讲解“Python遍历文件夹和读写文件的实现代码”的完整攻略。 1. 遍历文件夹 1.1 获取文件夹下的所有文件 Python中使用os模块可以遍历指定目录下的所有文件和文件夹。os模块中提供了os.walk()方法,该方法返回一个三元组,分别是当前文件夹名称,当前文件夹内所有子文件夹的名称列表,当前文件夹内的所有文件的名称列表。可以使用for…

    python 2023年5月20日
    00
  • Python Prim算法通过遍历墙实现迷宫的生成

    首先,需要明确的是Prim算法是生成树算法之一,它基于连接点的思想,能够生成固定的生成树。而实现迷宫的生成可以看做是基于Prim算法的延伸,即在Prim算法的基础上,通过墙的连接实现迷宫的生成。 基本思路如下: 初始时,随机选择一个起始点,放入生成树中。 以该点为起始点,将所有未在生成树中的邻居点加入到候选集合中。 从候选集合中任意选择一个点,将该点与生成树…

    python 2023年6月3日
    00
  • Python学习小技巧之列表项的推导式与过滤操作

    Python学习小技巧之列表项的推导式与过滤操作 简述 Python中,列表推导式和过滤操作可以很好地对列表进行处理,实现快速简洁的数据处理。在此,我们将详细介绍这两种技巧的使用方法。 列表推导式 列表推导式是利用简洁的语法来快速创建一个列表。它的通用格式如下: [expression for item in list if condition] expre…

    python 2023年6月3日
    00
  • 使用python实现CGI环境搭建过程解析

    使用Python实现CGI环境搭建过程解析 CGI(Common Gateway Interface)是一种用于在Web服务器和应用程序之间传递数据的标准。在Python中,我们可以使用CGI模块来实现CGI环境。本文将详细讲解如何使用Python实现CGI环境搭建过程,包括创建CGI脚本、配置Web服务器等内容,并提供两个示例。 创建CGI脚本 在实现CG…

    python 2023年5月15日
    00
  • 在Python中利用pickle保存变量的实例

    保存变量在Python中非常简单,可以使用Pickle模块,它可以将任何Python对象序列化为字符串(字节流),也可以将其反序列化回原始对象。在这里,我们将讨论如何使用Pickle保存变量的实例。 要使用Pickle,您需要首先导入它。示例如下: import pickle 保存变量的实例 我们可以使用Pickle保存Python对象。通过使用Pickle…

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