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

Python发送邮件提示Missing local name错误问题求助

错误根因

SMTP 554是SMTP服务返回的投递失败错误码,你遇到的Missing local name分支错误特指邮箱地址格式校验不通过:标准邮箱格式为[本地用户名]@[域名],你传入的发件人或收件人地址缺少@符号前的本地用户名部分。

排查步骤
  • 打印你代码中SENDER变量的值,确认没有多余空格、换行符,完整符合xxx@xx.com格式,不要出现@xx.com、xx@xx.com(前后带空格)这类非法值
  • 检查toaddrs变量的所有值,不管是单个字符串还是地址列表,每一个收件人地址都要符合上述格式要求,尤其是从CSV、接口等外部数据源读取地址时,注意过滤空值、不完整的异常地址
  • 校验邮件头中From、To字段的格式,如果你手动拼接了邮件头,确保地址没有被截断,示例正确格式为From: 发件人名称 <youraddr@example.com>,不要漏掉尖括号内的完整地址
预校验代码示例

你可以在调用server.sendmail前加入以下校验逻辑,提前定位格式错误的地址:

def is_valid_email(addr: str) -> bool:
    if '@' not in addr:
        return False
    local_part, domain_part = addr.split('@', maxsplit=1)
    return len(local_part.strip()) > 0 and len(domain_part.strip()) > 0

# 校验发件人
assert is_valid_email(SENDER), f"发件人地址格式非法: {repr(SENDER)}"
# 校验收件人
if isinstance(toaddrs, (list, tuple)):
    for addr in toaddrs:
        assert is_valid_email(addr), f"收件人地址格式非法: {repr(addr)}"
else:
    assert is_valid_email(toaddrs), f"收件人地址格式非法: {repr(toaddrs)}"

如果上述排查都没问题,确认你登录SMTP服务使用的账号和SENDER填写的地址完全一致,部分邮箱服务商禁止使用和登录账号不一致的发件人地址发送邮件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:15:01