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

使用Redemption导入含超长附件文件名的邮件问题求助

解决Redemption导入超长分块文件名附件显示为“Untitled attachment”的问题

我来帮你梳理这个问题的解决思路——你遇到的是Redemption的RDOMail.Import方法对RFC 2231格式分块文件名的解析兼容性问题。这种name*0/filename*0的分块命名是处理超长文件名的标准格式,但当前版本的Redemption在导入时没有正确拼接这些分块,导致Outlook 365无法识别文件名,显示为“Untitled attachment”。

下面是几个可行的解决方向:

1. 预处理MIME文件,手动拼接分块文件名

在调用RDOMail.Import之前,先读取保存的MIME文件内容,把分块的文件名参数拼接成完整名称后再导入:

  • 找到所有包含filename*0=、filename*1=的Content-Disposition行,以及name*0=、name*1=的Content-Type行
  • 把分块的字符串拼接成完整文件名,替换掉原来的分块行
    比如把:
    Content-Disposition: attachment; filename*0="this is an attachment with a really long file name - i hope "; filename*1="it works as intended.txt"
    
    替换为:
    Content-Disposition: attachment; filename="this is an attachment with a really long file name - i hope it works as intended.txt"
    
  • 注意保留编码标识(比如你的例子里的charset=UTF-8),确保拼接后的文件名编码正确

2. 直接用Redemption的IMAP对象获取邮件(如果来源是IMAP服务器)

如果你的邮件是从IMAP服务器获取的,跳过“保存为MIME文件再导入”的步骤,直接用Redemption的RDOIMAPMessage对象获取:

// 假设已经连接到IMAP服务器并获取到目标文件夹
RDOIMAPFolder imapFolder = rdoSession.GetDefaultFolder(rdoDefaultFolders.olFolderInbox) as RDOIMAPFolder;
RDOIMAPMessage msg = imapFolder.Items[1] as RDOIMAPMessage;
msg.Download(); // 直接从服务器下载完整邮件

这种方式Redemption会直接处理服务器返回的邮件数据,通常能正确解析分块文件名,避免导入MIME文件时的解析问题。

3. 导入后手动修复附件文件名

如果预处理MIME文件太繁琐,可以先完成导入,再遍历附件集合手动设置正确的文件名:

  • 导入邮件后,循环遍历RDOMail.Attachments集合
  • 从原MIME文件中提取对应附件的分块文件名并拼接完整
  • 设置RDOAttachment.FileName属性为拼接后的完整名称,然后保存邮件:
foreach (RDOAttachment att in rdoMail.Attachments)
{
    // 从原MIME文件中解析出当前附件的完整文件名
    string fullFileName = "拼接后的完整文件名";
    att.FileName = fullFileName;
}
rdoMail.Save();

4. 更新Redemption到最新版本

你当前使用的是v5.21.0.05378,这个版本可能存在对RFC 2231分块文件名的支持缺陷。建议检查Redemption的官方更新,升级到最新版本后,RDOMail.Import方法可能已经修复了这个问题,无需额外处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:54:04