Python3 SMTP发送邮件教程
引言
随着互联网的普及,电子邮件已经成为人们日常工作和生活中不可或缺的通讯工具。Python作为一门强大的编程语言,同样提供了发送电子邮件的功能。本文将详细讲解如何在Python3中使用SMTP协议发送邮件,包括准备工作、代码实现和常见问题解决。
准备工作
在开始编写代码之前,我们需要准备以下几项内容:
-
电子邮件服务器地址和端口:大多数电子邮件服务提供商如Gmail、Outlook等使用SMTP协议进行邮件发送。以Gmail为例,SMTP服务器地址为smtp.gmail.com,端口为587。
-
用户名和密码:用于登录SMTP服务器发送邮件的账号和密码。
-
Python环境:确保你的计算机上安装了Python3。
代码实现
以下是一个使用Python3发送电子邮件的示例代码:
python
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def send_email(sender, receiver, password, subject, body, smtp_server, smtp_port):
"""
发送电子邮件的函数
:param sender: 发件人邮箱地址
:param receiver: 收件人邮箱地址
:param password: 发件人邮箱密码
:param subject: 邮件主题
:param body: 邮件正文内容
:param smtp_server: SMTP服务器地址
:param smtp_port: SMTP服务器端口
"""
# 创建一个MIMEText对象,用于封装邮件正文
message = MIMEText(body, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8') # 发件人
message['To'] = Header(receiver, 'utf-8') # 收件人
message['Subject'] = Header(subject, 'utf-8') # 主题
try:
# 创建SMTP对象,连接到服务器
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(sender, password) # 登录
server.sendmail(sender, [receiver], message.as_string()) # 发送邮件
print("邮件发送成功!")
except smtplib.SMTPException as e:
print("邮件发送失败:", e)
finally:
server.quit() # 断开连接
# 示例用法
if __name__ == '__main__':
sender = 'your_email@example.com' # 发件人邮箱地址
receiver = 'receiver_email@example.com' # 收件人邮箱地址
password = 'your_password' # 发件人邮箱密码
subject = 'Python SMTP邮件测试' # 邮件主题
body = '这是一封由Python发送的测试邮件。' # 邮件正文内容
smtp_server = 'smtp.example.com' # SMTP服务器地址
smtp_port = 465 # SMTP服务器端口
send_email(sender, receiver, password, subject, body, smtp_server, smtp_port)
注意事项
-
由于安全原因,某些邮箱服务商可能要求使用授权码而非邮箱密码登录SMTP服务器。
-
如果你使用的是Gmail或其他需要身份验证的邮箱服务商,需要开启"Less secure app access"(较少安全的应用程序访问)选项。
-
代码中的SMTP服务器地址和端口可能因服务商而异,请根据实际情况修改。
总结
本文详细介绍了如何在Python3中使用SMTP协议发送邮件。通过阅读本文,读者可以了解到发送邮件所需的准备工作、代码实现以及注意事项。希望本文对大家有所帮助。