详解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 30行代码实现蚂蚁森林自动偷能量

    下面是Python实现蚂蚁森林自动偷能量的完整攻略。 一、前置条件 在编写代码之前,需要准备以下几个条件: Python 3.5及以上版本的环境。 安装必要的Python库,包括urllib和json。 二、步骤 打开蚂蚁森林APP,进入自己的能量球页面。 使用电脑浏览器打开蚂蚁森林官网,登录自己的支付宝账号。 在浏览器中按下F12或者右键选择“检查”,打开…

    python 2023年5月19日
    00
  • Python随机验证码生成和join 字符串的问题解析

    我来为您讲解“Python随机验证码生成和join 字符串的问题解析”的完整攻略。 1. 什么是随机验证码? 随机验证码是一种随机生成的数字或者字符,用于识别用户是否为人类的验证方式。在开发网站或者App时,使用随机验证码可以有效防止机器人恶意攻击或者垃圾注册,保证系统的安全性和稳定性。 2. 如何生成随机验证码? Python内置的random模块可以帮助…

    python 2023年6月3日
    00
  • Python实现二叉树的常见遍历操作总结【7种方法】

    下面是详细讲解“Python实现二叉树的常见遍历操作总结【7种方法】”的完整攻略。 1. 什么是二叉树 二叉树是一种树形结构,每个节点最多有两个子节点。二叉树的遍历是指按照一定的顺序访问二叉树中的所有节点。 2. 二叉树的遍历方法 以下是二叉树的七种遍历方法,包括前序遍历、中序遍历、后序遍历、层次遍历、Morris遍历、递归遍历和迭代遍历。 2.1 前序遍历…

    python 2023年5月14日
    00
  • 一文搞懂python异常处理、模块与包

    一文搞懂Python异常处理、模块与包 Python编程中,异常处理、模块与包是很重要的概念。本篇文章将详细讲解这三个主题,包括如何自定义异常,使用try…except处理异常,导入外部模块和打包你自己的模块,以及一些相关的实例。 异常处理 在程序运行时,可能会出现各种各样的异常情况,例如除零错误、变量名未定义错误等等。Python提供了try…ex…

    python 2023年5月13日
    00
  • python字典排序的方法

    当我们使用Python开发一个复杂的应用程序时,经常需要对数据进行排序。Python中的字典是一种非常灵活的数据结构,它允许我们将数据保存为键-值对的形式,并使用键来访问值。但字典默认是无序的,我们需要进行排序才可以按照我们想要的顺序进行输出。下面是Python字典排序的方法攻略: 字典排序的方法 1. 使用sorted函数 可以使用Python内置的sor…

    python 2023年5月13日
    00
  • python如何实现完全数

    要实现完全数,我们需要先了解什么是完全数。完全数又称为完美数,是指一个数恰好等于他的因子之和。 下面我们就来探讨一下如何用Python实现完全数。 思路 我们可以通过循环来一个一个判断数字是否为完全数。具体思路如下: 通过for循环遍历所有可能的数字 对于每个数字,通过for循环遍历所有从1到这个数字的整数 将这个数字能够整除的数字求和,如果和等于这个数字本…

    python 2023年5月18日
    00
  • Python监听键盘和鼠标事件的示例代码

    下面是Python监听键盘和鼠标事件的相关攻略: 监听键盘事件 Python监听键盘事件需要借助第三方库pynput,可以使用pip命令进行安装: pip install pynput 接下来我们可以开始编写代码: from pynput import keyboard # 当按下键盘某键时,该函数被调用 def on_press(key): try: pr…

    python 2023年6月5日
    00
  • 基于Python List的赋值方法

    以下是详细讲解“基于Python List的赋值方法”的完整攻略。 在Python中,可以使用多种方法对List进行赋值。本文将介绍三种常用的方法,并提供两个示例说明。 方法一:使用索引赋值 可以使用索引赋值的方法对List进行赋值。例如: lst = [1, 2, 3, 4, 5] lst[0] = 0 print(lst) # 输出[0, 2, 3, 4…

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