使用Python发送邮件消息的示例代码

一、Python发送邮件的基本知识

Python发送邮件的基本知识包括SMTP、MIME和SSL/TLS协议三个方面。

SMTP(Simple Mail Transfer Protocol)是Internet邮件传输的协议,Python中使用smtplib模块提供基于SMTP协议的邮件发送功能。

MIME(Multipurpose Internet Mail Extensions)是一种邮件传输协议,可用于发送复杂或富文本邮件。Python中使用email及其子模块提供MIME邮件相关的功能。

SSL(Secure Socket Layer)与TLS(Transport Layer Security)是加密通信协议,可用于保护电子邮件通信中的数据,Python中使用ssl模块提供SSL/TLS相关功能。

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

sender = 'sender@example.com' # 发件人邮箱
password = 'password' # 发件人邮箱密码或授权码
receivers = ['receiver1@example.com', 'receiver2@example.com'] # 接收人邮箱,可支持多个接收人

message = MIMEText('Python邮件发送测试', 'plain', 'utf-8')
message['From'] = formataddr((Header('发件人', 'utf-8').encode(), sender))
message['To'] = ','.join(receivers)
message['Subject'] = Header('Python SMTP 邮件测试', 'utf-8').encode()

try:
    smtpObj = smtplib.SMTP('smtp.example.com', 25) # SMTP服务器地址和端口
    smtpObj.login(sender, password) # 登录SMTP服务器
    smtpObj.sendmail(sender, receivers, message.as_string()) # 发送邮件
    smtpObj.quit() # 退出SMTP服务器
    print("邮件发送成功!")
except smtplib.SMTPException as e:
    print("邮件发送失败,错误信息:", e)

二、SMTP协议的使用

使用Python发送邮件的第一步是建立SMTP连接。Python提供了smtplib模块以支持SMTP协议。建立SMTP连接的方法是使用SMTP类的connect()或starttls()方法,这两种方法的选择取决于你是否需要使用加密连接。

在建立SMTP连接后,你可以使用SMTP类的login()方法提供SMTP服务器的用户名和密码进行身份验证。这是必须的,因为大多数SMTP服务器需要验证以防止恶意或未经授权的访问。

一旦你成功连接到SMTP服务器并进行身份验证,就可以使用SMTP类的sendmail()方法来发送邮件。在 sendmail() 方法中,你需要提供发件人地址,收件人地址以及要发送的消息。如果你要发送HTML或带附件的消息,你需要使用email库和MIME协议。

三、MIME协议的使用

邮件中的MIME(Multipurpose Internet Mail Extensions)协议是一种邮件内容格式。它允许您在邮件中发送不同类型的内容,例如文本、HTML、图像或附件。

Python中使用email库来创建MIME消息。将要发送的邮件消息作为一个字符串传递给MIMEText类。然后设置消息的发送者、接收者和主题,将该消息附加到MIME邮件中并发送它。

from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

msg = MIMEMultipart()
msg['From'] = formataddr((Header('XX网站管理员', 'utf-8').encode(), 'webmaster@example.com'))
msg['To'] = formataddr((Header('用户', 'utf-8').encode(), 'user@example.com'))
msg['Subject'] = Header('XX网站密码重置', 'utf-8').encode()

# 邮件正文
message = MIMEText('请点击下面的链接重置您的密码:\n\nhttp://www.example.com/resetpassword?key=abcdefg\n\n', 'plain', 'utf-8')
msg.attach(message)

# 添加附件
filename = 'guide.pdf'
attachment = open(filename, 'rb')
part = MIMEBase('application', 'octet-stream')
part.set_payload((attachment).read())
encoders.encode_base64(part)
part.add_header('Content-Disposition', "attachment; filename= %s" % filename)
msg.attach(part)

try:
    smtpObj = smtplib.SMTP('smtp.example.com', 25)
    smtpObj.login(sender, password)
    smtpObj.sendmail(sender, receivers, msg.as_string())
    smtpObj.quit()
    print("邮件发送成功!")
except smtplib.SMTPException as e:
    print("邮件发送失败,错误信息:", e)

四、使用SSL/TLS进行加密通信

SSL(Secure Socket Layer)与TLS(Transport Layer Security)是加密通信协议,可用于保护电子邮件通信中的数据。Python中使用ssl模块提供SSL/TLS相关功能。

如果你要使用SSL加密SMTP通信,请使用SMTP_SSL类代替SMTP类。如果你要使用STARTTLS加密SMTP通信,请使用SMTP类的starttls()方法来启动加密连接。

import ssl

context = ssl.create_default_context()
with smtplib.SMTP_SSL("smtp.example.com", 465, context=context) as server:
    server.login(sender, password)
    server.sendmail(sender, receivers, message.as_string())
    print('邮件发送成功!')

五、使用Python发送HTML邮件

使用Python发送HTML格式的邮件也很简单。只需使用MIMEText类,并指定“html”作为消息的子类型即可。

from email.mime.text import MIMEText

html = '

Hello, World!

这是一封HTML邮件。

' message = MIMEText(html, 'html', 'utf-8')

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/205927.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-07 17:47
下一篇 2024-12-07 17:47

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python实现简易心形代码

    在这个文章中,我们将会介绍如何用Python语言编写一个非常简单的代码来生成一个心形图案。我们将会从安装Python开始介绍,逐步深入了解如何实现这一任务。 一、安装Python …

    编程 2025-04-29
  • 怎么写不影响Python运行的长段代码

    在Python编程的过程中,我们不可避免地需要编写一些长段代码,包括函数、类、复杂的控制语句等等。在编写这些代码时,我们需要考虑代码可读性、易用性以及对Python运行性能的影响。…

    编程 2025-04-29
  • IDEA Java发送邮件出现错误解决方案

    IDEA Java是一款常用的Java开发工具,很多开发者都使用它来开发Java应用程序。然而,在使用IDEA Java发送邮件时,有可能会出现一些错误。本文将从多个方面对该错误进…

    编程 2025-04-29
  • Python爱心代码动态

    本文将从多个方面详细阐述Python爱心代码动态,包括实现基本原理、应用场景、代码示例等。 一、实现基本原理 Python爱心代码动态使用turtle模块实现。在绘制一个心形的基础…

    编程 2025-04-29

发表回复

登录后才能评论