您的位置:

Python SMTP发送邮件的简易教程

Python语言实用性非常强,发送邮件也是Python功能之一。Python内置对SMTP的支持。使用SMTP可以发送电子邮件,SMTP则是Python处理电子邮件的标准协议。

一、连接SMTP服务器

要使用SMTP发送邮件,必须首先进行SMTP服务器的连接,Python的SMTP库提供了SMTP类,可以方便地和SMTP服务器进行对话。连接SMTP服务器,需要在Python脚本中引入SMTP模块,示例如下:

import smtplib

使用SMTP类,需要创建SMTP对象实例,需要传入SMTP主机地址和端口号。不同邮件服务提供商的SMTP服务器地址不同。以下代码以QQ邮箱为例示范SMTP连接:

# 导入SMTP模块
import smtplib

# 配置邮箱服务器地址和端口号
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465

# 登录邮箱服务器
server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)

在创建SMTP对象实例时,为了确保用户的个人信息安全,可以选择采用SSL协议进行SMTP连接。

在SMTP连接成功后,还需要进行登录认证。使用SMTP对象的login方法可以轻松地进行邮件服务器认证:

# 登录邮箱服务器
server.login(sender_email, password)

其中,sender_email为邮件发送方邮箱,password为登录邮箱对应的密码。

二、构建邮件

SMTP连接成功后,就可以进行邮件的构建了。Python的email库提供了EmailMessage类,可以轻松地构建邮件。以下是Python构建邮件的示例代码:

from email.message import EmailMessage

# 创建EmailMessage对象
message = EmailMessage()

# 设置邮件主题
message['Subject'] = 'Python SMTP发送邮件的简易教程'

# 添加接收方地址
recipients = ['receiver_1@example.com', 'receiver_2@example.com']
message['To'] = ', '.join(recipients)

# 添加邮件正文
message.set_content('这是一封Python SMTP发送的简易教程邮件。')

# 添加邮件附件
attachment_path = r'/path/to/attachment/file'
with open(attachment_path, 'rb') as file:
    attachment_data = file.read()
    attachment_name = 'attachment.txt'
message.add_attachment(attachment_data, maintype='application', subtype='octet-stream', filename=attachment_name)

EmailMessage对象包含邮件的主题、收件人、邮件正文和附件等信息。要添加附件,可以使用EmailMessage对象的add_attachment方法添加附件。需要注意的是,添加附件需要将附件内容读入内存,然后作为参数传递。

三、发送邮件

构建好邮件之后,就可以使用SMTP类的send_message方法将邮件发送出去了:

# 发送邮件
server.send_message(from_addr=sender_email, to_addrs=recipients, msg=message)

# 关闭SMTP连接
server.quit()

send_message方法接收发件人、收件人和邮件内容作为参数,并将邮件发送出去。发送完成后,还需要使用SMTP类的quit方法关闭SMTP连接

四、完整示例

以下是Python SMTP发送邮件的完整示例:

import smtplib
from email.message import EmailMessage

# 配置邮箱服务器地址和端口号
SMTP_SERVER = 'smtp.qq.com'
SMTP_PORT = 465

# 邮箱账号和密码
sender_email = 'your_email@example.com'
password = 'your_password'

# 接收方邮箱
recipients = ['recipient_1@example.com', 'recipient_2@example.com']

# 创建SMTP连接
server = smtplib.SMTP_SSL(SMTP_SERVER, SMTP_PORT)

# 登录邮箱
server.login(sender_email, password)

# 创建EmailMessage对象
message = EmailMessage()

# 设置邮件主题
message['Subject'] = 'Python SMTP发送邮件的简易教程'

# 添加接收方地址
message['To'] = ', '.join(recipients)

# 添加邮件正文
message.set_content('这是一封Python SMTP发送的简易教程邮件。')

# 添加邮件附件
attachment_path = r'/path/to/attachment/file'
with open(attachment_path, 'rb') as file:
    attachment_data = file.read()
    attachment_name = 'attachment.txt'
message.add_attachment(attachment_data, maintype='application', subtype='octet-stream', filename=attachment_name)

# 发送邮件
server.send_message(from_addr=sender_email, to_addrs=recipients, msg=message)

# 关闭SMTP连接
server.quit()

以上就是Python SMTP发送邮件的简易教程,可以轻松地使用Python发送电子邮件了。