2

从我之前的问题开始,如果我设置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;
}
4

1 回答 1

0

这是因为您仅将正文设置为 html,您需要将其设置为混合并重新添加附件:

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;
于 2017-02-10T12:49:37.040 回答