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

发送REST服务器调试数据时收到空白邮件,求排查代码问题

问题排查与修复方案

嘿,我帮你找出代码里的问题了,这几个错误导致你收到空白且无主题的邮件:

1. 邮件发送时没用到你构建的msg对象

你在server.sendmail里直接传了str(loaded_r)或者原始body,但你之前构建的MIMEMultipart对象msg才是包含主题、发件人等头部信息的完整邮件体。直接传字符串的话,邮件服务器只会把它当成纯文本内容,完全忽略你设置的主题和头部,这就是为什么邮件没主题还空白的核心原因。

2. 错误地直接attach字典

msg.attach()方法需要接收MIME类型的对象(比如MIMEText),你直接把字典body传进去肯定不行,邮件系统根本不知道怎么处理这个类型的内容。

3. 其他潜在小问题

  • Python 2里的print虽然可以不加括号,但规范写法建议加上
  • server.sendmail的发件人参数硬编码成了error-report@do_not_reply.com,和你设置的msg['From']不一致,可能触发邮件服务器的校验机制
  • 如果初始化SMTP服务器失败,finally块里调用server.quit()会抛出新的错误

修复后的完整代码

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import json

# For testing
def sendMail(usr, pwd, to, body):
    """ just for testing to send error via email """
    fromaddr = usr
    toaddr = to
    msg = MIMEMultipart()
    msg['From'] = fromaddr
    msg['To'] = toaddr
    msg['Subject'] = "Data add request"
    
    # 把字典转成格式化的JSON字符串,再封装成纯文本MIME部件
    formatted_body = json.dumps(body, indent=4)
    text_content = MIMEText(formatted_body, 'plain')
    msg.attach(text_content)
    
    server = None
    try:
        server = smtplib.SMTP('smtp.gmail.com', 587)
        server.ehlo()
        server.starttls()
        server.ehlo()
        server.login(usr, pwd)
        
        # 打印调试用的JSON内容
        print("json: ", formatted_body)
        
        # 发送完整的邮件体(包含头部和正文)
        server.sendmail(fromaddr, toaddr, msg.as_string())
        print("邮件发送成功!")
    except Exception, err:
        print('发送邮件出错: ', err)
    finally:
        if server is not None:
            server.quit()

核心修复点解释

  • 用MIMEText把JSON字符串包装成邮件能识别的正文格式,再attach到msg里
  • 发送时用msg.as_string(),这样邮件的主题、发件人、收件人以及正文都会被正确传递
  • 统一发件人参数,避免和邮件头部信息冲突
  • 增加服务器对象的判空,防止初始化失败时调用quit()引发新错误

现在你再调用这个函数,应该就能收到带正确主题和完整JSON内容的邮件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:21:56