来源:
http://ccmykj.cn
http://wwww.ccmykj.cn
http://wsxzc.com
http://www.wsxzc.comPython提供了强大的标准库用于电子邮件发送,使开发者能够轻松实现自动化邮件通知、报告发送、用户注册验证等功能。本教程将带你全面掌握Python邮件发送技术。
主要应用场景: 系统监控报警、批量邮件营销、用户账户验证、自动化报告发送、事务性通知等。
用于建立与SMTP服务器的连接并发送邮件。支持SMTP、SMTP_SSL和STARTTLS加密方式。
用于构建复杂的邮件消息,包括纯文本、HTML内容、附件以及多部分邮件结构。
在发送邮件前,你需要:
邮箱服务 | SMTP服务器 | 端口 | 加密方式 |
|---|---|---|---|
QQ邮箱 | smtp.qq.com | 465 | SSL |
163邮箱 | smtp.163.com | 465 | SSL |
Gmail | smtp.gmail.com | 587 | TLS |
这是最基本的邮件发送方式,适合发送简单的通知和消息。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮件配置
smtp_server = 'smtp.163.com'
smtp_port = 465
username = 'your_email@163.com'
password = 'your_authorization_code' # 授权码,不是登录密码
# 创建邮件内容
message = MIMEText('这是一封使用Python发送的纯文本邮件测试内容。', 'plain', 'utf-8')
message['From'] = Header('Python发件人', 'utf-8')
message['To'] = Header('收件人', 'utf-8')
message['Subject'] = Header('Python邮件测试', 'utf-8')
try:
# 创建SMTP连接
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(username, password)
# 发送邮件
server.sendmail(username, ['recipient@example.com'], message.as_string())
print("邮件发送成功!")
# 关闭连接
server.quit()
except Exception as e:
print(f"邮件发送失败: {str(e)}")HTML邮件允许你创建更丰富的内容,包括格式、图片和链接,适合营销邮件和通知。
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮件配置
smtp_server = 'smtp.qq.com'
smtp_port = 465
username = 'your_email@qq.com'
password = 'your_authorization_code' # QQ邮箱授权码
# 创建HTML邮件内容
html_content = """
<html>
<body>
<h1 style="color: #3498db;">欢迎加入我们的服务!</h1>
<p>感谢您注册我们的平台,以下是您的账户信息:</p>
<ul>
<li><strong>用户名:</strong> user123</li>
<li><strong>注册时间:</strong> 2023-06-15</li>
</ul>
<p><a href="https://example.com/activate" style="background: #3498db; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;">激活账户</a></p>
<p style="color: #7f8c8d;">如果您未进行此操作,请忽略此邮件。</p>
</body>
</html>
"""
message = MIMEText(html_content, 'html', 'utf-8')
message['From'] = Header('系统通知 <no-reply@example.com>', 'utf-8')
message['To'] = Header('新用户', 'utf-8')
message['Subject'] = Header('账户注册成功通知', 'utf-8')
try:
server = smtplib.SMTP_SSL(smtp_server, smtp_port)
server.login(username, password)
server.sendmail(username, ['recipient@example.com'], message.as_string())
server.quit()
print("HTML邮件发送成功!")
except Exception as e:
print(f"邮件发送失败: {str(e)}")通过Python可以轻松发送包含附件的邮件,适合发送报告、文档和图片。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
from email.header import Header
import os
# 邮件配置
smtp_server = 'smtp.gmail.com'
smtp_port = 587
username = 'your_email@gmail.com'
password = 'your_app_password' # Gmail应用密码
# 创建多部分消息
message = MIMEMultipart()
message['From'] = Header('报告系统 <reports@example.com>', 'utf-8')
message['To'] = Header('经理', 'utf-8')
message['Subject'] = Header('月度销售报告', 'utf-8')
# 添加邮件正文
body = MIMEText('您好,请查收本月的销售报告。', 'plain', 'utf-8')
message.attach(body)
# 添加附件
file_path = 'monthly_report.pdf'
with open(file_path, 'rb') as f:
attachment = MIMEApplication(f.read(), Name=os.path.basename(file_path))
attachment['Content-Disposition'] = f'attachment; filename="{os.path.basename(file_path)}"'
message.attach(attachment)
try:
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # Gmail使用TLS加密
server.login(username, password)
server.sendmail(username, ['manager@example.com'], message.as_string())
server.quit()
print("带附件的邮件发送成功!")
except Exception as e:
print(f"邮件发送失败: {str(e)}")Python通过smtplib和email库提供了强大的邮件发送能力。无论是简单的文本通知,还是复杂的带附件HTML邮件,Python都能轻松应对。
在实际应用中,建议将邮件发送功能封装成独立模块或类,以便在整个项目中复用。
现在你已经掌握了Python邮件发送的核心技术,可以开始在你的项目中实现自动化邮件功能了!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。