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

Python邮件发送:如何正确添加含空格文件名的附件?

含空格文件名的邮件附件处理方案

问题根源在于Content-Disposition头中的文件名未正确处理空格——邮件客户端会将空格视为分隔符,导致文件名被截断;直接替换为%20不符合邮件头编码规范,会显示原始转义字符。

方法1:用双引号包裹文件名

修改prepare_attachment函数中的add_header语句,给文件名加上双引号,确保邮件客户端完整识别文件名:

p.add_header('Content-Disposition', 'attachment; filename="%s"' % filename)

方法2:使用标准邮件头编码(推荐)

借助email.utils模块的encode_header方法对文件名进行编码,兼容所有邮件客户端,还能处理非ASCII字符:

  1. 先导入模块:
from email.utils import encode_header
  1. 修改prepare_attachment函数:
def prepare_attachment(filepath):
    import os  # 确保导入os模块
    filename = os.path.basename(filepath)
    attachment = open(filepath, "rb")

    p = MIMEBase('application', 'octet-stream')
    p.set_payload(attachment.read())
    encoders.encode_base64(p)

    # 编码文件名,指定utf-8编码
    encoded_filename = encode_header(filename, 'utf-8').decode()
    p.add_header('Content-Disposition', f'attachment; filename={encoded_filename}')

    return p

该方式会自动对空格等特殊字符编码,邮件客户端接收后会解码显示原始文件名,无截断或乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 09:42:43