Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Mimekit将rtf添加为附件,而不是主体_C#_Mailkit_Mimekit - Fatal编程技术网

C# Mimekit将rtf添加为附件,而不是主体

C# Mimekit将rtf添加为附件,而不是主体,c#,mailkit,mimekit,C#,Mailkit,Mimekit,使用以下代码,winmail.dat文件的rtf正文将作为附件添加到保存的电子邮件中,而不是正文: using (Stream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None)) { MimeKit.MimeMessage mimeMessage = MimeKit.MimeMessage.Load(stream); int i = 1; foreach (MimeKit.M

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

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");
        }
    }
}
我怎样才能解决这个问题


查看
附件
它不在那里,但附件和body.rtf文件在
车身零件
中。因此,我可以像这样获得body.rtf文件:

int b = 1;
foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts)
{
    if (!bodyPart.IsAttachment)
    {
        bodyPart.WriteTo(path + $"_bodyPart{b++}.{bodyPart.ContentType.MediaSubtype}");
    }
}

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

内容类型:文本/rtf;name=body.rtf

(新行)


获取
内容类型
标题的原因是,您正在编写MIME信封以及内容

您需要做的是:

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}");
    }
}