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发送电子邮件了。