Python 发送SMTP邮件的简单教程

下面是“Python发送SMTP邮件的简单教程”的完整攻略:

1. SMTP协议介绍

SMTP(Simple Mail Transfer Protocol)是一种用于发送邮件的协议,它是由RFC 821规范定义的。在Python中,我们可以借助内置的smtplib模块来发送邮件。

2. 准备工作

在使用Python发送邮件之前,我们需要先进行以下准备工作:

  1. 获得邮件服务器的地址和端口号。
  2. 获得发件人的登录用户名和密码。
  3. 获取收信人的邮箱地址和邮件主题、正文等信息。

3. Python发送SMTP邮件的代码示例

在Python中,发送SMTP邮件的代码示例如下所示:

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

# 第三方 SMTP 服务
mail_host = "smtp.xxx.com"  # SMTP服务器
mail_user = "user"  # 用户名
mail_pass = "password"  # 密码

sender = 'sender@xxx.com'  # 发件人邮箱
receivers = ['receiver@xxx.com']  # 收件人邮箱列表

message = MIMEText('Python SMTP 邮件发送测试', 'plain', 'utf-8')
message['From'] = Header("发件人姓名", 'utf-8')  # 发件人姓名
message['To'] = Header("收件人姓名", 'utf-8')  # 收件人姓名
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 连接到服务器
    smtpObj.login(mail_user, mail_pass)  # 登录到服务器
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送邮件
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

上述代码中,我们首先通过smtplib模块连接到指定的SMTP服务器,然后通过email.mime.textemail.header模块创建邮件内容和邮件头信息,最后通过sendmail()方法发送邮件。

3.1 示例一

下面是一个更加完整的Python发送SMTP邮件的示例,它包含了邮件主题、正文、附件等信息:

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

# 第三方 SMTP 服务
mail_host = "smtp.xxx.com"  # SMTP服务器
mail_user = "user"  # 用户名
mail_pass = "password"  # 密码

sender = 'sender@xxx.com'  # 发件人邮箱
receivers = ['receiver@xxx.com']  # 收件人邮箱列表

message = MIMEMultipart('related')
message['From'] = Header("发件人姓名", 'utf-8')  # 发件人姓名
message['To'] = Header("收件人姓名", 'utf-8')  # 收件人姓名
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

# 创建邮件内容
text = MIMEText('Python SMTP 邮件发送测试', 'plain', 'utf-8')
message.attach(text)

# 创建邮件附件
filename = 'test.txt'
if os.path.isfile(filename):
    with open(filename, 'rb') as f:
        mime = MIMEApplication(f.read())
        mime.add_header('Content-Disposition', 'attachment', filename=filename)
        message.attach(mime)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 连接到服务器
    smtpObj.login(mail_user, mail_pass)  # 登录到服务器
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送邮件
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

在上述示例中,我们首先使用email.mime.multipart模块创建一个带有主题、正文和附件的MIMEMultipart对象,然后通过MIMETextMIMEApplication分别创建邮件正文和附件。最后,我们通过attach()方法将正文和附件添加到MIMEMultipart对象中。

3.2 示例二

下面是一个Python发送HTML格式邮件的示例,邮件内容为一个带有图片的HTML页面:

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
import os

# 第三方 SMTP 服务
mail_host = "smtp.xxx.com"  # SMTP服务器
mail_user = "user"  # 用户名
mail_pass = "password"  # 密码

sender = 'sender@xxx.com'  # 发件人邮箱
receivers = ['receiver@xxx.com']  # 收件人邮箱列表

message = MIMEMultipart('related')
message['From'] = Header("发件人姓名", 'utf-8')  # 发件人姓名
message['To'] = Header("收件人姓名", 'utf-8')  # 收件人姓名
subject = 'Python SMTP HTML 邮件测试'
message['Subject'] = Header(subject, 'utf-8')

# 定义HTML页面内容
html_content = """
    <html>
    <head></head>
    <body>
        <h1>Python SMTP发送HTML邮件测试</h1>
        <p><img src="cid:image1"></p>
    </body>
    </html>
"""

# 创建邮件内容
text = MIMEText(html_content, 'html', 'utf-8')
message.attach(text)

# 创建邮件图片
filename = 'test.png'
if os.path.isfile(filename):
    with open(filename, 'rb') as f:
        img = MIMEImage(f.read())
        img.add_header('Content-ID', '<image1>')
        message.attach(img)

try:
    smtpObj = smtplib.SMTP()
    smtpObj.connect(mail_host, 25)  # 连接到服务器
    smtpObj.login(mail_user, mail_pass)  # 登录到服务器
    smtpObj.sendmail(sender, receivers, message.as_string())  # 发送邮件
    print("邮件发送成功")
except smtplib.SMTPException as e:
    print("Error: 无法发送邮件", e)

在上述示例中,我们定义了一个带有图片的HTML页面,并通过email.mime.image模块创建一个图片MIMEImage对象,将其添加到邮件内容中。同时,我们通过Content-ID参数为该图片指定了一个ID,方便在HTML页面中引用。最后,我们将HTML页面实例添加到邮件内容中,以便发送出去。

以上就是Python发送SMTP邮件的简单教程完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 发送SMTP邮件的简单教程 - Python技术站

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

相关文章

  • Python里隐藏的“禅”

    Python里隐藏的“禅”攻略 什么是Python之禅? Python之禅(The Zen of Python)是一个关于Python编程哲学的文艺化写法,以19行简明易懂的互联网段子形式,在Python解释器中输入[import this]即可看到。 Python之禅原版 Beautiful is better than ugly. Explicit is…

    python 2023年6月5日
    00
  • Python获取网络图片和视频的示例代码

    Python获取网络图片和视频的示例代码 在本教程中,我们将介绍如何使用Python获取网络图片和视频。我们将提供两个示例,演示如何使用Python和requests库下载网络图片和视频。 安装requests库 在使用requests库之前,我们需要先安装它。可以使用pip命令来安装requests库: pip install requests 下载网络图…

    python 2023年5月15日
    00
  • python 实现UTC时间加减的方法

    下面是Python实现UTC时间加减的方法的完整攻略。 1. 了解UTC时间和Python中的时间模块 UTC时间是“协调世界时”的缩写,是世界上标准的时间。与之相对的,各个地区的所采用的时间则可能有所差异。在Python中,我们可以通过内置的时间模块datetime来对时间进行操作,包括对UTC时间的操作。 2. 使用datetime.timedelta进…

    python 2023年6月2日
    00
  • Python排序算法之堆排序算法

    下面是详细讲解“Python排序算法之堆排序算法”的完整攻略,包含两个示例说明。 堆排序算法 堆排序算法是一种基于二叉堆的排序算法。它的基本思想是将待排序的序列构建成一个二叉堆,然后不断将堆顶元素与堆底元素交换,再重新调整,到整个序列有序为止。 堆排序算法的Python实现 下面是一个示例代码,用于实现堆排序算法: def heap_sort(arr): n…

    python 2023年5月14日
    00
  • python 对excel交互工具的使用详情

    下面我将详细讲解Python对Excel交互工具的使用详情的完整实例教程。 Python对Excel交互工具的使用 Python对Excel交互工具的主要功能是对Excel表格进行读写、数据处理和操作等操作,其能够使用Python编程语言的特性快速、高效地完成Excel表格数据的处理和分析。 在Python中,使用openpyxl第三方库来进行Excel交互…

    python 2023年5月13日
    00
  • python实现apahce网站日志分析示例

    接下来我会详细讲解如何使用Python实现Apache网站日志分析的完整攻略,包括几个步骤和一些实例。 步骤一:获取日志文件 首先,要获取Apache服务器的日志文件。通常,日志文件在web服务器的配置文件中指定,而默认的文件名通常是“access.log”。可以使用scp或者其他文件传输工具来将日志文件拷贝到本地。 在后续的步骤中,假设我们已经将日志文件保…

    python 2023年5月20日
    00
  • JS中正则表达式全局匹配正斜杠的方法

    在JavaScript中,正则表达式是一种强大的工具,可以用于字符串匹配和替换。有时候,我们需要在正则表达式中匹配正斜杠(/)字符。由于正斜杠是正则表达式的特殊字符,因此需要使用转义字符来匹配它。以下是“JS中正则表达式全局匹配正斜杠的方法”的完整攻略: 使用反斜杠转义正斜杠 在正则表达式中,可以使用反斜杠(\)来转义正斜杠。以下是示例代码: var str…

    python 2023年5月14日
    00
  • 微信跳一跳小游戏python脚本

    下面是关于“微信跳一跳小游戏python脚本”的详细讲解攻略。 微信跳一跳小游戏python脚本攻略 背景介绍 微信跳一跳是一款非常火热的小游戏,许多人都对这个游戏去玩过。而我们可以使用Python脚本来辅助我们完成跳一跳的游戏,从而得分更高。 实现思路 使用Python编写一个脚本,对微信跳一跳游戏进行模拟,实现自动跳跃。 想要实现自动跳跃,首先需要了解跳…

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