C# Mimekit将rtf添加为附件,而不是主体
使用以下代码,winmail.dat文件的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
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}");
}
}