详解Python发送email的三种方式

yizhihongxing

下面是“详解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 3.8.3 安装配置图文教程

    Python3.8.3安装配置图文教程 本文将介绍Python3.8.3在Windows系统上的安装和配置过程。 1. 下载Python3.8.3安装包 访问Python官网(https://www.python.org/downloads/)下载Python3.8.3的安装包(根据自己的系统版本选择相应的安装包)。例如,对于64位Windows系统,可以选…

    python 2023年5月13日
    00
  • Python异步爬虫requests和aiohttp中代理IP的使用

    Python异步爬虫requests和aiohttp中代理IP的使用 在进行爬虫开发时,我们可能需要使用代理IP来避免被封IP或提高爬取效率。Python中的requests和aiohttp库都支持使用代理IP。本文将介绍如何在Python异步爬虫requests和aiohttp中使用代理IP。 使用requests库 步骤一:安装requests库 在Py…

    python 2023年5月15日
    00
  • Python工具箱系列(三十一)

    Neo4j是一个高性能的开源的,使用Java语言实现的NoSQL图数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。现实中很多数据都是用图来表达的,比如社交…

    python 2023年5月11日
    00
  • 基于python实现井字棋小游戏

    基于python实现井字棋小游戏完整攻略 1. 概述 本攻略将指导您如何使用python编写一个简单的井字棋小游戏。 2. 准备工作 在编写本游戏前,您需要安装Python 3,并安装该游戏所需的库,其中包括: tkinter: 用于创建游戏图形界面 Pillow: 用于对图形进行处理 您可以使用以下命令安装这些库: pip install tkinter …

    python 2023年5月19日
    00
  • python代码检查工具pylint 让你的python更规范

    Python代码检查工具pylint让你的Python更规范 在Python开发中,代码规范是非常重要的,可以提高代码的可读性和可维护性。本文将介绍种常用的Python代码检查工具——pylint,以及如何使用它来检查Python代码的规范性。 1. 问题描述 在Python开发中,代码规范是非常重要的,可以提高代码的可读性和可维护性。但是,由于Python…

    python 2023年5月14日
    00
  • Python I/O与进程的详细讲解

    Python I/O 与进程的详细讲解 在Python中,I/O和进程是非常重要的概念。本篇攻略将对Python中的I/O和进程进行详细讲解,帮助你加深对这些概念的理解。 I/O 在Python中,I/O操作是一种与输入和输出设备之间进行数据交互的操作。常见的I/O操作包括读取文件、网络通信等。Python提供了一些内置函数来进行I/O操作。 打开文件 在P…

    python 2023年6月2日
    00
  • 在Python中实现贪婪排名算法的教程

    在Python中实现贪婪排名算法的教程 贪婪排名算法是一种常用的排序算法,其基本思想是根据每个元素的权重值进行排序,从而得到排名列表。在Python中可以使用sorted()函数实现贪婪排名算法。本文将详细讲解Python实现贪婪排名算法的完整攻略,包算法原理、Python实现过程和示例。 算法原理 贪婪排名算法的基本思想是:根据每个素的权重值进行排序,从而…

    python 2023年5月14日
    00
  • python 实现的截屏工具

    Python实现的截屏工具攻略 介绍 截屏工具是一种常用的屏幕截图工具,可用于捕捉电脑屏幕上的图像和视频,通常用于教育、演示、演讲和软件开发中。本文将介绍如何用Python实现一个截屏工具。 步骤 1. 安装Pillow库 Pillow是Python图像处理库,可用于创建和处理图像,我们可以使用其ImageGrab模块来抓取屏幕上的图像。通过以下命令安装: …

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