You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python天气报告邮件主题缺失问题求助

邮件主题不显示问题的解决方案

问题原因

你在第二个脚本中虽创建了EmailMessage对象并设置了主题,但调用sendmail时参数使用错误——直接传递了文本文件内容和msg对象,导致邮件主题未被正确包含到发送的邮件内容中。smtplib.SMTP.sendmail()的第三个参数需要是完整的邮件字符串(包含所有邮件头和正文),而非单独的正文内容。

修正后的第二个脚本代码

from data import extract_data
import smtplib, os
from email.message import EmailMessage
from dotenv import load_dotenv
_ = load_dotenv()

extract_data()

email_address = os.environ.get("gmail_username")
email_password = os.environ.get("gmail_password")

msg = EmailMessage()
# 设置邮件主题
msg['Subject'] = 'Daily Weather Report'
# 设置发件人和收件人
msg['From'] = email_address
msg['To'] = "my_email@gmail.com"

with open("weather.txt", "r") as my_file:
    file_content = my_file.read()

# 将文件内容设置为邮件正文
msg.set_content(file_content)

server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(email_address, email_password)
# 发送完整的邮件(包含主题、正文等所有信息)
server.send_message(msg)
server.quit()

关键修改点

  1. 给EmailMessage对象添加From和To头信息,符合邮件标准要求。
  2. 使用msg.set_content(file_content)将天气报告内容设置为邮件正文,替代直接传递正文给sendmail的错误方式。
  3. 使用server.send_message(msg)发送完整邮件,确保主题被正确包含在邮件头中。

内容的提问来源于stack exchange,提问作者Mark Moralls

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 12:22:24