首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mimekit将rtf添加为附件而不是身体。

Mimekit将rtf添加为附件而不是身体。
EN

Stack Overflow用户
提问于 2017-02-09 14:45:45
回答 1查看 954关注 0票数 1

使用以下代码,winmail.dat文件的rtf正文作为附件添加到保存的电子邮件中,而不是正文:

代码语言:javascript
复制
using (Stream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
{
    MimeKit.MimeMessage mimeMessage = MimeKit.MimeMessage.Load(stream);

    int i = 1;
    foreach (MimeKit.MimePart attachment in mimeMessage.Attachments)
    {
        if (attachment.GetType() == typeof(MimeKit.Tnef.TnefPart))
        {
            MimeKit.Tnef.TnefPart tnefPart = (MimeKit.Tnef.TnefPart)attachment;

            MimeKit.MimeMessage tnefMessage = tnefPart.ConvertToMessage();
            tnefMessage.WriteTo(path + $"_tnefPart{i++}.eml");
        }
    }
}

我怎么才能解决这个问题?

查看Attachments,它不存在于其中,但是附件和body.rtf文件都存在于BodyParts中。这样我就可以得到这样的body.rtf文件:

代码语言:javascript
复制
int b = 1;
foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts)
{
    if (!bodyPart.IsAttachment)
    {
        bodyPart.WriteTo(path + $"_bodyPart{b++}.{bodyPart.ContentType.MediaSubtype}");
    }
}

附带注意: body.rtf文件不是真正的rtf,因为它以以下内容开头:

内容-类型: text/rtf;name=body.rtf (新项目)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-16 00:46:20

获取Content-Type头的原因是因为您正在编写MIME信封和内容。

你需要做的是:

代码语言:javascript
复制
int b = 1;
foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts)
{
    if (!bodyPart.IsAttachment)
    {
        var mime = (MimeKit.MimePart) bodyPart;
        mime.ContentObject.DecodeTo(path + $"_bodyPart{b++}.{bodyPart.ContentType.MediaSubtype}");
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42139666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档