Python操作邮件
在 Python 中,你可以使用 smtplib 发送电子邮件,并使用 email 模块来构建邮件内容。下面是一个完整的示例,展示如何使用 SMTP 服务器发送电子邮件。
发送 Email 的步骤
1. 连接 SMTP 服务器(如 Gmail、Outlook、QQ 邮箱等)。
2. 构建邮件内容(支持纯文本或 HTML)。
3. 发送邮件。
代码示例:使用 Gmail SMTP 发送邮件
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
# SMTP 服务器配置(以 Gmail 为例)
SMTP_SERVER = "smtp.gmail.com"
SMTP_PORT = 587 # TLS 端口,使用 465 代表 SSL
EMAIL_ACCOUNT = "your_email@gmail.com" # 你的邮箱
EMAIL_PASSWORD = "your_app_password" # 你的 SMTP 授权码(不是邮箱密码)
# 收件人信息
TO_EMAIL = "recipient@example.com"
SUBJECT = "测试邮件"
BODY = "你好,这是一封测试邮件,使用 Python 发送。"
def send_email():
try:
# 创建邮件对象
msg = MIMEMultipart()
msg["From"] = EMAIL_ACCOUNT
msg["To"] = TO_EMAIL
msg["Subject"] = SUBJECT
# 添加邮件正文
msg.attach(MIMEText(BODY, "plain"))
# 连接 SMTP 服务器
server = smtplib.SMTP(SMTP_SERVER, SMTP_PORT)
server.starttls() # 启用 TLS 加密
server.login(EMAIL_ACCOUNT, EMAIL_PASSWORD) # 登录 SMTP 服务器
server.sendmail(EMAIL_ACCOUNT, TO_EMAIL, msg.as_string()) # 发送邮件
server.quit() # 关闭连接
print("邮件发送成功!")
except Exception as e:
print(f"邮件发送失败: {e}")
# 发送邮件
send_email()
不同邮箱的 SMTP 配置
| 邮箱提供商 | SMTP 服务器 | 端口(TLS) | 端口(SSL) |
|---|---|---|---|
| Gmail | smtp.gmail.com | 587 | 465 |
| Outlook/Hotmail | smtp.office365.com | 587 | 465 |
| QQ 邮箱 | smtp.qq.com | 587 | 465 |
| 163 邮箱 | smtp.163.com | 25 | 465 |
| Yahoo | smtp.mail.yahoo.com | 587 | 465 |
⚠ 注意:
• Gmail 需要开启“允许低安全性应用访问”,或者使用应用专用密码(App Password)。
• QQ 邮箱和 163 邮箱 需要在设置里开启 SMTP服务 并获取授权码,作为 EMAIL_PASSWORD。
• 企业邮箱 可能需要不同的 SMTP 服务器地址,请查阅官方文档。
发送 HTML 邮件
如果想要发送 HTML 格式的邮件,可以修改 MIMEText 的类型:
html_body = """\
<html>
<body>
<h1>你好,</h1>
<p>这是一封 <b>HTML</b> 格式的邮件。</p>
</body>
</html>
"""
msg.attach(MIMEText(html_body, "html")) # 改为 "html" 格式
发送带附件的邮件
如果需要发送带附件的邮件,可以使用 MIMEApplication:
from email.mime.base import MIMEBase
from email import encoders
# 添加附件
file_path = "example.pdf"
with open(file_path, "rb") as attachment:
part = MIMEBase("application", "octet-stream")
part.set_payload(attachment.read())
encoders.encode_base64(part) # Base64 编码
part.add_header("Content-Disposition", f"attachment; filename={file_path}")
msg.attach(part)
总结
• 连接 SMTP 服务器并登录
• 构建邮件内容(支持文本、HTML、附件)
• 发送邮件并关闭连接
这样,你就可以用 Python 轻松发送邮件了 🚀
浙公网安备 33010602011771号