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

SMTP发送邮件时无法展示完整正文与主题的问题咨询

问题根因

  • SMTP的sendmail方法第三个参数需要传入完整的标准邮件原始报文,而非仅正文内容。标准邮件需要包含Subject(主题)、From(发件人)、To(收件人)等头字段,头字段和正文之间需要用两个连续换行分隔,否则服务端无法识别主题,还会丢弃不符合格式的内容。
  • 你的多行字符串拼接存在语法问题:Python中相邻的字符串字面量会自动合并,"Hey"和下一行的"For game ID..."之间没有空格或换行,会直接拼接为HeyFor...,导致开头内容异常。

修正方案

方案1:直接构造符合规范的原始邮件报文

sent_subject = "Warning"
# 修正字符串拼接的间隙问题,同时拼接邮件头+正文
sent_msg = (
    f"From: {sender_add}\n"
    f"To: {receiver_add}\n"
    f"Subject: {sent_subject}\n"
    "\n" # 头和正文的分隔必须保留两个换行
    "Hey\n" 
    f"For game ID: {game_id} and game Name: {game_name} \n\n you are going to die in {secs}sec"
    "\n\n"
    "Warning,\n"
    "Chixcy\n"
)

smtp_server.sendmail(sender_add, receiver_add, sent_msg)

方案2(更推荐):使用Python标准库email构造邮件,避免格式错误

适合后续扩展附件、HTML内容、编码适配的场景:

from email.message import EmailMessage

# 构造邮件对象
msg = EmailMessage()
msg['From'] = sender_add
msg['To'] = receiver_add
msg['Subject'] = "Warning"
# 设置正文
msg.set_content(
    f"Hey\n"
    f"For game ID: {game_id} and game Name: {game_name} \n\n you are going to die in {secs}sec"
    "\n\n"
    "Warning,\n"
    "Chixcy\n"
)

# 发送时直接传序列化后的邮件内容
smtp_server.send_message(msg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:36:07