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

Python发送带附件邮件时附件显示为无名称(noname)且无扩展名问题求助

解决Python发送邮件附件显示为无名称(noname)的问题

嘿,这个问题我之前踩过坑!核心问题出在附件头部的参数名称写错了——你用了Content-Decomposition,但正确的HTTP头应该是Content-Disposition!这个头的作用就是告诉邮件客户端“这是一个附件,请以下载方式处理”,同时传递文件名信息,写错的话客户端就没法识别文件名,只能显示默认的noname。

关键修正步骤

把你代码里的这一行:

payload.add_header('Content-Decomposition', 'attachment', filename=attach_file_name)

直接改成:

payload.add_header('Content-Disposition', 'attachment', filename=attach_file_name)

额外的优化建议

为了让邮件发送更规范、更稳定,我还建议你做这几个小调整:

  • 使用准确的MIME类型:对于PDF文件,用application/pdf代替octate-stream,这样邮件客户端能直接识别文件类型,而不是当成通用二进制文件
  • 用with语句管理文件:避免忘记关闭文件句柄,造成资源泄漏
  • 确认文件路径:如果附件不在脚本的同级目录,最好使用绝对路径,防止找不到文件

完整的修正代码示例

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

# 配置邮件基础信息
sender_email = "your_sender@example.com"
receiver_email = ["recipient1@example.com", "recipient2@example.com"]
mail_content = "这是一封带有正确附件的Python测试邮件"

message = MIMEMultipart()
message['From'] = sender_email
message['To'] = ', '.join(receiver_email)
message['Subject'] = 'Python Email - 附件已修复'
message.attach(MIMEText(mail_content, 'plain'))

attach_file_name = 'Final Project - Basic Python.pdf'
# 用with语句自动管理文件,避免资源泄漏
with open(attach_file_name, 'rb') as attach_file:
    # 指定PDF对应的标准MIME类型
    payload = MIMEBase('application', 'pdf')
    payload.set_payload(attach_file.read())
    encoders.encode_base64(payload)
    # 关键修正:使用正确的Content-Disposition头
    payload.add_header('Content-Disposition', 'attachment', filename=attach_file_name)
    message.attach(payload)

# 发送邮件(示例用SMTP服务器,需替换为你的服务商配置)
with smtplib.SMTP('smtp.example.com', 587) as server:
    server.starttls()
    server.login(sender_email, "your_email_password")
    server.send_message(message)

这样修改后,邮件附件就能正常显示文件名和扩展名啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:27:33