首页 > 解决方案 > 如何检索电子邮件附件的内容,就像我 .ToString() 时显示的那样?

问题描述

我似乎找不到任何只返回此 e.ToString() 输出的编码部分的方法。

('e' 是一个带有 1 个单数电子邮件附件的 MimeEntity)

这是输出的样子:

X-MimeKit-Warning: Do NOT use ToString() to serialize entities! Use one of the WriteTo() methods instead!
Content-Type: image/png; name="px.png"
Content-Description: px.png
Content-Disposition: attachment; filename="px.png"; size=119;
        creation-date="Tue, 06 Apr 2021 09:24:23 GMT";
        modification-date="Tue, 06 Apr 2021 09:24:56 GMT"
Content-Transfer-Encoding: base64

iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY/j//z8ABf4C/qc1gYQAAAAASUVO
RK5CYII=

我唯一要找的就是这部分:

iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAAXNSR0IArs4c6QAAAARnQU1BAACx
jwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAMSURBVBhXY/j//z8ABf4C/qc1gYQAAAAASUVO
RK5CYII=

标签: c#mailkitmimekit

解决方案


您可以使用接受布尔值的WriteTo重载来指示您是否只需要 MimeEnity 的内容。

像这样


// 'e' is a MimeEntity

var ms = new MemoryStream();
e.WriteTo(ms, true); // no need to provide an cancellationtoken.

// ms will have only the content here

第三个参数cancellationtoken默认为 null,因此您无需提供令牌实例。仅当您想在 WriteTo 操作完成之前优雅地结束它时,它才有意义。


推荐阅读