En utilisant le code suivant le corps de rtf du fichier winmail.dat est ajouté en tant que pièce jointe à l'adresse électronique enregistrée non pas le corps:Mimekit ajoute le rtf en tant que pièce jointe et non le corps
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");
}
}
}
Comment puis-je répare ça?
En regardant dans le Attachments
il est présent pas là, mais les pièces jointes et le fichier body.rtf sont présents dans le BodyParts
. Je peux donc obtenir le fichier body.rtf comme ceci:
int b = 1;
foreach (MimeKit.MimeEntity bodyPart in tnefMessage.BodyParts)
{
if (!bodyPart.IsAttachment)
{
bodyPart.WriteTo(path + $"_bodyPart{b++}.{bodyPart.ContentType.MediaSubtype}");
}
}
Side note: Le fichier body.rtf n'est pas vrai rtf parce qu'il commence par ce qui suit:
Contenu -Type: text/rtf; name = body.rtf
(nouvelle ligne)