python自动化发送邮件实例讲解

下面是“Python自动化发送邮件实例讲解”的完整攻略。

Python自动化发送邮件实例讲解

一、背景介绍

Python 作为一款易学易用的高级编程语言,拥有着完善的邮件发送模块,可以用 Python 代码自动化地发送邮件。在脚本自动化和日常办公中,Python 自动发送邮件的功能有着很广泛的应用。

二、实现原理

Python 发送邮件的原理是通过 SMTP 协议将邮件发送给服务器,通过服务器重新发送给收件人。SMTP 是一种邮件传输协议,Python 内置的 smtplib 库提供了 SMTP 发送邮件的功能。

Python发送带附件的邮件的原理是需要用到MIME(Multipurpose Internet Mail Extensions)标准,将邮件的内容与附件的内容整合在一起,并生成相应的多媒体格式。

三、Python自动化发送邮件实例

实例1:发送简单邮件

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

# 发件人邮箱
sender = 'your_email@qq.com'
# 接收邮箱
receiver = 'receive_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试'

# 编写 HTML 邮件正文
mail_body = '<p>Python 邮件发送测试...</p>'

# 以 HTML 形式发送邮件
message = MIMEText(mail_body, 'html', 'utf-8')
message['From'] = Header("发件人名称", 'utf-8')
message['To'] =  Header("收件人名称", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')

# SMTP服务器地址
smtp_server = 'smtp.qq.com'
smtp_port = 465

# 发件人邮箱账号和密码
username = 'your_email@qq.com'
password = 'smtp授权码(非邮箱登录密码)'

# SSL安全连接
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录验证
smtp.login(username, password)
# 发送邮件
smtp.sendmail(sender, receiver, message.as_string())
# 退出
smtp.quit()

代码详解:

  • 通过 smtplib 模块提供的 SMTP() 方法实例化一个 SMTP 对象,smtp_server 和 smtp_port 是其他邮件提供商的 SMTP 服务器地址和端口;
  • 通过实例化的 SMTP 对象,登录发件人邮箱账号和密码,使用 SMTP() 中的 login() 方法;
  • 创建 MIMEText 对象,指定邮件正文格式和编码方式,邮件头部的 From、To 和 Subject 需要使用 Header 对象来格式化编码;
  • 调用 SMTP 对象的 sendmail() 方法发送邮件,这里需要指定发件人、收件人、以及格式化后的邮件内容;
  • 最后使用 SMTP 对象的 quit() 方法退出 SMTP 会话。

实例2:发送带附件的邮件

import os
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.header import Header
from email.mime.application import MIMEApplication

# 发件人邮箱
sender = 'your_email@qq.com'
# 接收邮箱
receiver = 'receive_email@qq.com'
# 邮件主题
subject = 'Python SMTP邮件测试(带附件)'

# 创建一个带附件的邮件实例
message = MIMEMultipart()
message['From'] = Header("发件人名称", 'utf-8')
message['To'] =  Header("收件人名称", 'utf-8')
message['Subject'] = Header(subject, 'utf-8')

# 添加邮件正文
mail_body = '<p>Python 邮件发送测试...</p>'
message.attach(MIMEText(mail_body, 'html', 'utf-8'))

# 添加附件
filepath = "test.txt"
if os.path.isfile(filepath):
    # 添加附件到邮件中
    with open(filepath, 'rb') as f:
        # 使用 MIMEApplication() 来添加附件,注意要指定文件名称
        attachment = MIMEApplication(f.read())
        attachment.add_header('Content-Disposition', 'attachment', filename='test.txt')
        message.attach(attachment)

# SMTP服务器地址
smtp_server = 'smtp.qq.com'
smtp_port = 465

# 发件人邮箱账号和密码
username = 'your_email@qq.com'
password = 'smtp授权码(非邮箱登录密码)'

# SSL安全连接
smtp = smtplib.SMTP_SSL(smtp_server, smtp_port)
# 登录验证
smtp.login(username, password)
# 发送邮件
smtp.sendmail(sender, receiver, message.as_string())
# 退出
smtp.quit()

代码详解:

  • 在发送带附件的邮件时,需要创建一个 MIMEMultipart 对象;
  • 在 MIMEMultipart 中包含邮件的正文和附件;
  • 可以使用 MIMEApplication() 来添加附件;
  • 在添加附件时,需要指定附件的文件名称。

四、总结

以上便是 Python 自动化发送邮件的实例讲解,相信大家都掌握了具体的实现方法,欢迎大家尝试编写自己的邮件发送应用,提高工作效率。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python自动化发送邮件实例讲解 - Python技术站

(0)
上一篇 2023年5月20日
下一篇 2023年5月20日

相关文章

  • python如何压缩新文件到已有ZIP文件

    要将新文件添加到已有的ZIP文件中,可以使用Python的内置模块zipfile。下面是具体的实现步骤: 1. 打开已有的ZIP文件 首先需要打开已有的ZIP文件,可以使用zipfile.ZipFile来打开文件,并将其赋值给一个变量。可以使用以下代码打开一个名为example.zip的ZIP文件: import zipfile zip_file = zip…

    python 2023年6月3日
    00
  • 教你如何用python开发一款数字推盘小游戏

    以下是关于“教你如何用Python开发一款数字推盘小游戏”的完整攻略: 简介 数字推盘是一款简单的益智游戏,玩家需要将数字方块推到指定位置,以达到游戏目标。在本教程中,我们将介绍如何使用Python开发一款数字推盘小游戏,并使用示例说明如何实现游戏逻辑和界面设计。 游戏规则 数字推盘游戏的规则如下: 游戏区域为一个$N\times M$的网格,其中包含若干数…

    python 2023年5月14日
    00
  • python爬虫实现POST request payload形式的请求

    以下是关于“Python爬虫实现POST request payload形式的请求”的完整攻略: Python爬虫实现POST request payload形式的请求 在Python爬虫中,我们经常需要使用POST请求来提交数据。有时候,我们需要使用request payload形式来提交数据。以下是Python爬虫实现POST request paylo…

    python 2023年5月15日
    00
  • 详解Python 优先队列

    Python 优先队列使用方法的完整攻略 什么是优先队列? 优先队列是一种队列,但是每次取出的元素都是队列中优先级最高的元素,而不是按照先进先出的规则取出。优先队列可以使用堆来实现,堆是一种二叉树类型的数据结构,可以方便地排序。Python中的heapq模块提供了优先队列的相关操作。 Python中如何使用优先队列 创建优先队列 使用Python中的heap…

    python-answer 2023年3月25日
    00
  • Python图像处理之图像金字塔的向上和向下取样

    Python图像处理之图像金字塔的向上和向下取样 图像金字塔是一种通过对同一幅图像进行不同分辨率的缩放而得到的一系列图像集合,可以用于图像处理中的多尺度分析和特征提取等。其中向上取样和向下取样是图像金字塔处理中常用的两个方法,下面我们将详细讲解它们的原理和使用方法。 向下取样 向下取样可以理解为将原始图像放大一倍,再把每一对相邻的像素缩减为一个像素,因此它也…

    python 2023年5月14日
    00
  • Python求算数平方根和约数的方法汇总

    Python求算数平方根和约数的方法汇总 求算数平方根 求算数平方根的方法多种多样,下面分别介绍两种常用的方法。 方法一:利用math模块中的sqrt函数 import math num = float(input("请输入一个数:")) # 调用math模块中的sqrt函数求算数平方根 result = math.sqrt(num) p…

    python 2023年6月3日
    00
  • Python 重构问题

    Python 重构是代码优化的一种重要方式。它通过重新组织现有代码来提高代码质量、可读性、可维护性和可扩展性。在这个过程中,开发者可以使用多种技术和工具来达到重构的目的。 1.什么是Python 重构? Python 重构是指在不改变代码可观察行为的前提下,重新组织已有代码,优化代码质量和性能。 Python 重构的主要目的是: 提高代码的可读性和可维护性。…

    python-answer 2023年3月25日
    00
  • 基于Python制作一个简单的文章搜索工具

    下面是制作一个简单文章搜索工具的完整攻略。 步骤一:准备工作 在开始我们的编码之前,我们需要先准备好工作环境。以下是具体步骤。 安装Python:打开python官网(https://www.python.org/),选择最新的Python版本进行安装。 安装必要的库:在命令行或终端中输入以下命令,安装所需的库。 python pip install who…

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