ubuntu

如何在Ubuntu上配置Python邮件发送功能

小樊
40
2025-12-28 06:25:57
栏目: 编程语言

在 Ubuntu 上配置 Python 邮件发送功能

一 准备与方案选择

二 方案一 使用外部邮箱 SMTP 发送(推荐)

import os, smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.base import MIMEBase
from email import encoders

# 从环境变量读取敏感信息
sender   = os.getenv("MAIL_USER")
password = os.getenv("MAIL_PASS")
receiver = "recipient@example.com"

# 创建邮件
msg = MIMEMultipart()
msg["From"]    = sender
msg["To"]      = receiver
msg["Subject"] = "Python 邮件测试"

# 正文
msg.attach(MIMEText("这是一封来自 Python 的测试邮件(文本)", "plain", "utf-8"))

# 附件
filename = "example.py"
with open(filename, "rb") as f:
    part = MIMEBase("application", "octet-stream")
    part.set_payload(f.read())
encoders.encode_base64(part)
part.add_header("Content-Disposition", f"attachment; filename={filename}")
msg.attach(part)

# 发送
try:
    with smtplib.SMTP("smtp.gmail.com", 587) as server:  # 如用 SSL 可改为 smtp.gmail.com:465 并使用 SMTP_SSL
        server.starttls()
        server.login(sender, password)
        server.sendmail(sender, receiver, msg.as_string())
    print("邮件发送成功")
except Exception as e:
    print("发送失败:", e)

三 方案二 使用 Postfix 作为本地 MTA 发送

import smtplib
from email.mime.text import MIMEText

msg = MIMEText("这是通过本机 Postfix 发送的测试邮件。", "plain", "utf-8")
msg["From"] = "you@your_domain"
msg["To"]   = "recipient@example.com"
msg["Subject"] = "Postfix 测试"

try:
    with smtplib.SMTP("localhost", 25) as server:
        server.sendmail(msg["From"], [msg["To"]], msg.as_string())
    print("邮件发送成功")
except Exception as e:
    print("发送失败:", e)

四 常见问题与排查

五 Web 框架与第三方库

0
看了该问题的人还看了