📜  SMTP-简单邮件传输协议(1)

📅  最后修改于: 2023-12-03 15:20:09.990000             🧑  作者: Mango

简介

SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)是用于发送和传输电子邮件的标准协议。它最初由 RFC 821 规范描述,但现在已由 RFC 5321 定义,是用于发送邮件的互联网标准协议。

SMTP 使用客户端服务器模式,其中客户端使用 SMTP 协议将邮件传输到服务器,然后通过该服务器将邮件发送到接收者。

工作原理

SMTP 协议通常使用 TCP 端口 25,SMTP 服务器监听该端口以接收邮件流量。SMTP 工作流程如下:

  1. 客户端连接 SMTP 服务器端口,并进行身份验证。
  2. 客户端通过向 SMTP 服务器发送命令来发送邮件。
  3. 服务器验证邮件以确保它符合标准,并将其传输到目标服务器或传送代理。
  4. 目标服务器或传输代理接收邮件,并将其传递给目标收件人的邮件服务器。
  5. 目标邮件服务器将邮件传递到接收方的邮箱或通过其他邮件协议(如 IMAP)提供访问。

SMTP 命令

SMTP 协议有许多命令,其中最常见的是以下几种:

  • HELO:用于与服务器建立连接并标识客户端。
  • MAIL FROM:指定电子邮件的发件人地址。
  • RCPT TO:指定电子邮件的收件人地址。
  • DATA:指定要发送的邮件正文。
  • QUIT:关闭 SMTP 连接。

代码示例

以下是 Python 语言中使用的示例代码,用于通过 SMTP 协议发送电子邮件:

import smtplib
from email.mime.text import MIMEText

# 构造邮件正文
msg = MIMEText('这是测试邮件。')
msg['Subject'] = '测试邮件'
msg['From'] = 'sender@example.com'
msg['To'] = 'recipient@example.com'

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

# 发送邮件
server.sendmail('sender@example.com', 'recipient@example.com', msg.as_string())

# 关闭 SMTP 连接
server.quit()

以上代码中,首先构造了一个 MIMEText 对象来定义邮件正文、主题和发件人/收件人地址。然后使用 smtplib 模块中的 SMTP 对象来连接 SMTP 服务器并发送邮件。最后,使用 quit() 方法关闭连接。