SMTPlib 模块:使用python 发送电子邮件

SMTPlib 模块:使用python 发送电子邮件


1. 简介

python 的 smtplib 模块是一个用于发送电子邮件的库,它提供了与 SMTP(简单邮件传输协议)服务器交互的功能。通过这个模块,开发者可以轻松地将电子邮件发送到指定的收件人。

2. 流程

使用 smtplib 发送电子邮件的基本流程包括以下几个步骤:

  1. 连接到 SMTP 服务器:首先需要与邮件服务器建立连接。
  2. 登录认证:使用有效的用户名和密码进行登录。
  3. 构造邮件内容:创建邮件内容,包括文本、主题等。
  4. 发送邮件:通过 SMTP 服务器发送邮件。
  5. 断开连接:邮件发送完成后,关闭与服务器的连接。

3. 方法讲解

smtplib 模块提供了一系列方法来实现与 SMTP 服务器的交互。以下是一些核心方法及其用途:

smtplib.SMTP

这是 smtplib 的主类,用于创建 SMTP 对象并初始化与 SMTP 服务器的连接。

  • 语法smtplib.SMTP(host[, port[, local_hostname]])
  • 参数
    • host:SMTP 服务器的域名或IP地址。
    • port:SMTP 服务器的端口号,默认为 25。
    • local_hostname:(可选)本地主机名,如果省略,将使用主机名。

smtplib.SMTP_SSL

用于创建一个直接使用 SSL 加密的 SMTP 对象。

  • 语法:smtplib.SMTP_SSL(host[, port[, local_hostname]])
  • 参数
    • host:SMTP 服务器的域名或IP地址。
    • port:SMTP 服务器的端口号,默认为 25。
    • local_hostname:(可选)本地主机名,如果省略,将使用主机名。

SMTP.connect

用于建立到 SMTP 服务器的网络连接。

  • 语法SMTP.connect(host[, port])
  • 参数
    • host:SMTP 服务器的域名或IP地址。
    • port:SMTP 服务器的端口号。

SMTP.starttls

启动与 SMTP 服务器的 TLS(传输层安全性)会话,确保数据加密传输。

  • 语法SMTP.starttls()
  • 返回:无。

SMTP.login

用于登录到 SMTP 服务器。

  • 语法SMTP.login(user, password)
  • 参数
    • user:SMTP 服务器的用户名。
    • password:与用户名关联的密码。

SMTP.sendmail

用于发送邮件。

  • 语法SMTP.sendmail(from_addr, to_addrs, msg)
  • 参数
    • from_addr:邮件发送者的地址。
    • to_addrs:一个包含邮件接收者地址的列表。
    • msg:邮件内容,通常是 email.message.Message 或其子类的实例。

SMTP.quit

用于断开与 SMTP 服务器的连接,并安全退出。

  • 语法SMTP.quit()
  • 返回:无。

4. 示例

以下是一个使用 smtplib 发送简单文本邮件的示例:

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

# 邮件发送者和接收者
sender = 'your_email@example.com'
receiver = 'recipient_email@example.com'

# SMTP 服务器地址和端口
smtp_server = 'smtp.example.com'
port = 25

# 创建一个 MIMEText 对象,用于构造邮件内容
message = MIMEText('This is the email body.', 'plain', 'utf-8')
message['From'] = Header("Your Name", 'utf-8')
message['To'] = Header("Recipient Name", 'utf-8')
message['Subject'] = Header('Test email', 'utf-8')

# 连接到 SMTP 服务器
server = smtplib.SMTP(smtp_server, port)


# 登录
server.login(sender, 'your_password')

# 发送邮件
server.sendmail(sender, [receiver], message.as_string())

# 断开连接
server.quit()

5. 关于 email.mime

smtplib只负责发送邮件,而构造邮件内容需要用到email.mime

email.mime 是 Python email 库的一部分,用于创建不同类型的邮件内容。以下是一些常用的 email.mime 类:

  • MIMEText:用于创建纯文本邮件。例如文本,html等
  • MIMEMultipart:用于创建包含多个部分(如文本和附件)的复合邮件。
  • MIMEApplication:用于创建附件。

MIMEMultipart就相当于一个容器,在具有基础属性和方法的同时,它还能将其他类的实例组合起来,就有点类似与vue的组件那样,通过搭积木的方式构建复杂的邮件内容。

示例:发送带有附件的邮件

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


# 创建一个 MIMEMultipart 对象
message = MIMEMultipart()

# 添加邮件头部
message['From'] = 'your_email@example.com'
message['To'] = 'recipient_email@example.com'
message['Subject'] = 'Test email with attachment'

# 添加邮件正文
body = MIMEText('This is the email body.', 'plain', 'utf-8')
message.attach(body)

# 添加附件
# 打开附件文件
with open('example.txt', 'rb') as file:
    # 创建一个 MIMEApplication 对象,用于添加附件
    attachment = MIMEApplication(file.read(), _subtype='octet-stream')
    attachment.add_header('Content-Disposition', 'attachment', filename='example.txt')
    attachment.add_header('Content-Type', 'application/octet-stream')
    # 将附件附加到邮件中
    message.attach(attachment)

# 连接到 SMTP 服务器
server = smtplib.SMTP('smtp.example.com', 25)

server.login('your_email@example.com', 'your_password')

# 发送邮件
server.sendmail('your_email@example.com', 'recipient_email@example.com', message.as_string())

# 断开连接
server.quit()

值得注意的是:不同的邮件服务器,发送邮件的协议和端口号可能不同,需要根据实际情况进行修改


2024/7/24

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星眺北海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值