设置 mimemessage 的正文会删除其他细节

Setting the body of a mimemessage removes other details

从我的 开始,如果我设置 MimeMessage 的正文,附件、正文部分和所有详细信息都会被删除。我该如何解决这个问题?

foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts)
{
    if (!bodyPart.IsAttachment)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            bodyPart.WriteTo(ms);

            ms.Flush();
            ms.Position = 0;
            using (StreamReader sr = new StreamReader(ms))
            {
                //Read in the contents until we get to the rtf
                string line;
                while (!(line = sr.ReadLine()).StartsWith("{") && !line.StartsWith("\")) { }

                tnefMessage.Body = new MimeKit.TextPart("plain")
                {
                    Text = RTFToText($"{line}{sr.ReadToEnd()}")
                };
            }
        }
    }
}

static string RTFToText(string rtf)
{
    string text = string.Empty;
    System.Threading.Thread thread = new System.Threading.Thread(() =>
    {
        using (System.Windows.Forms.RichTextBox rtb = new System.Windows.Forms.RichTextBox())
        {
            rtb.Rtf = rtf;
            text = rtb.Text;
        }
    });
    thread.SetApartmentState(System.Threading.ApartmentState.STA);
    thread.Start();
    thread.Join();

    return text;
}

这是因为您只将正文设置为 html,您需要将其设置为与 re-add 附件混合:

Multipart multipart = new Multipart("mixed");
multipart.Add(new MimeKit.TextPart("plain")
{
    Text = RTFToText($"{line}{sr.ReadToEnd()}")
});

foreach (MimeEntity attachment in tnefMessage.Attachments)
{
    multipart.Add(attachment);
}

tnefMessage.Body = multipart;