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

使用EAGetMail保存EML前移除附件失败,寻求技术解决方案

解决EAGetMail移除附件后EML仍保留附件的问题

你的问题出在正向循环移除附件的逻辑上:当你删除一个附件时,_mail.Attachments数组的长度会立即缩短,后续的索引会发生偏移,导致部分附件被跳过,没有被真正删除。

正确的实现方式

改用反向循环从最后一个附件开始删除,这样数组长度的变化不会影响未处理的附件索引:

_mail = new("EAGetMailLicence");
_mail.Load(memoryStream.ToArray());

// 反向循环删除所有附件
for (int i = _mail.Attachments.Length - 1; i >= 0; i--)
{
    _mail.RemoveAttachment(_mail.Attachments[i]);
}

_mail.Update();
// 此处执行保存.eml文件的操作

为什么其他方法无效?

  • _mail.Attachments[i] = null:只是将数组元素置空,但EAGetMail的邮件对象内部依然保留了附件的原始数据,不会影响最终生成的EML。
  • Array.Clear(_mail.Attachments):同样只是清空数组引用,没有触发EAGetMail内部的附件移除逻辑,邮件原始结构未被修改。

只有通过RemoveAttachment方法并配合正确的循环逻辑,才能真正从邮件对象中移除附件,再调用Update()同步修改,最后保存的EML就不会包含附件了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 12:49:58