要使用Python通过QQ的SMTP服务器发送电子邮件,需要遵循以下步骤。请注意,QQ邮箱对SMTP的使用有一定的限制,需要在QQ邮箱的设置中启用SMTP服务,并获取一个授权码(而非你的QQ密码)来作为SMTP的登录密码。
以下是一个使用Python的smtplib和email库通过QQ的SMTP服务器发送电子邮件的示例:
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# 发件人信息
sender_email = 'your_qq_email@qq.com' # 替换为你的QQ邮箱地址
sender_pass = 'your_authorization_code' # 替换为你获取的授权码,不是QQ密码
# 收件人信息
receiver_email = 'receiver_email@example.com' # 替换为收件人的邮箱地址
# 创建MIMEMultipart对象
message = MIMEMultipart('alternative')
message['Subject'] = '测试邮件'
message['From'] = sender_email
message['To'] = receiver_email
# 创建HTML内容
html_content = """
<html>
<head><title>测试邮件</title></head>
<body>
<h1>这是一封来自QQ邮箱的HTML格式邮件</h1>
<p>你好,这是邮件的正文。</p>
</body>
</html>
"""
# 将HTML内容附加到邮件中
part = MIMEText(html_content, 'html')
message.attach(part)
# 使用smtplib库发送邮件
try:
# 连接到QQ的SMTP服务器
server = smtplib.SMTP_SSL('smtp.qq.com', 465) # 使用SSL加密的端口
server.login(sender_email, sender_pass) # 登录到SMTP服务器
server.sendmail(sender_email, receiver_email, message.as_string()) # 发送邮件
print('邮件发送成功!')
except smtplib.SMTPException as e:
print(f'邮件发送失败:{e}')
finally:
server.quit() # 关闭与SMTP服务器的连接
注意事项:
- 授权码:由于QQ邮箱对安全性有较高要求,你需要登录到QQ邮箱的网页版,然后在“设置”->“账户”中找到“POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务”,启用SMTP服务,并生成一个授权码。这个授权码将用于SMTP登录,而不是你的QQ密码。
- SMTP服务器地址和端口:QQ邮箱的SMTP服务器地址是smtp.qq.com,SSL加密的端口是465。也可以选择使用非SSL的端口25,但出于安全考虑,建议使用SSL加密。
- 依赖库:smtplib和email库都是Python标准库的一部分,因此你不需要额外安装任何库就可以运行上述代码。
- 网络问题:如果你的网络有防火墙或ISP限制,可能会导致无法连接到SMTP服务器。确保你的网络环境允许通过SMTP发送邮件。
- 调试:如果邮件没有发送成功,检查SMTP服务器日志、QQ邮箱的设置以及任何可能的错误消息,以帮助诊断问题。