2016-09-25 6 views
0

J'ai un document Word et en utilisant Aspose.Word pour effectuer un publipostage et sauvegarder le résultat à un flux de mémoire MHTML (partie de mon code):perspectives mimekit texte montrent que l'attachement

Aspose.Words.Document doc = new Aspose.Words.Document(documentDirectory + countryLetterName); 
doc.MailMerge.Execute(tempTable2); 
MemoryStream outStream = new MemoryStream(); 
doc.Save(outStream, Aspose.Words.SaveFormat.Mhtml); 

Je utiliser MimeKit (dernière version de NuGet) pour envoyer mon message:

outStream.Position = 0; 
MimeMessage messageMimeKit = MimeMessage.Load(outStream); 
messageMimeKit.From.Add(new MailboxAddress("<sender name>", "<sender email")); 
messageMimeKit.To.Add(new MailboxAddress("<recipient name>", "<recipient email>")); 
messageMimeKit.Subject = "my subject"; 
using (var client = new MailKit.Net.Smtp.SmtpClient()) 
{ 
    client.Connect(<smtp server>, <smtp port>, true); 
    client.Authenticate("xxxx", "pwd"); 
    client.Send(messageMimeKit); 
    client.Disconnect(true); 
} 

Lors de l'ouverture du courrier électronique reçu dans mon client de messagerie Web, je vois le texte (avec l'image) et l'image en pièce jointe.

Lors de l'ouverture du courrier électronique reçu dans Outlook (2016), le corps du message est vide et j'ai deux pièces jointes, 1 avec le texte et 1 avec l'image.

regardant le contenu MHT lui-même, il ressemble à:

MIME-Version: 1.0 
Content-Type: multipart/related; 
    type="text/html"; 
    boundary="=boundary.Aspose.Words=--" 

This is a multi-part message in MIME format. 

--=boundary.Aspose.Words=-- 
Content-Disposition: inline; 
    filename="document.html" 
Content-Type: text/html; 
    charset="utf-8" 
Content-Transfer-Encoding: quoted-printable 
Content-Location: document.html 

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; charset= 
=3Dutf-8" /><meta http-equiv=3D"Content-Style-Type" content=3D"text/css" />= 
<meta name=3D"generator" content=3D"Aspose.Words for .NET 14.1.0.0" /><titl= 
e></title></head><body> 
*****body removed ***** 
</body></html> 

--=boundary.Aspose.Words=-- 
Content-Disposition: inline; 
    filename="image.001.jpeg" 
Content-Type: image/jpeg 
Content-Transfer-Encoding: base64 
Content-Location: image.001.jpeg 

****image content remove**** 

--=boundary.Aspose.Words=---- 

Y at-il une mise en forme ou si je dois faire pour obtenir ce bien montré dans Outlook? Ou est-ce causé par les mots-clés "3D" trouvés, comme content = 3D "xxxx", style = 3D "xxxx"?

Merci d'avance.

Edward

Répondre

0

Les =3D bits sont le codage du caractère quoted-printable=. Depuis les en-têtes déclarent correctement le Content-Transfer-Encoding à quoted-printable, ce n'est pas le problème.

Voici quelques suggestions à essayer de masser le contenu en quelque chose qui fonctionne dans Outlook (Outlook est très tatillon):

MimeMessage messageMimeKit = MimeMessage.Load(outStream); 
messageMimeKit.From.Add(new MailboxAddress("<sender name>", "<sender email")); 
messageMimeKit.To.Add(new MailboxAddress("<recipient name>", "<recipient email>")); 
messageMimeKit.Subject = "my subject"; 

var related = (MultipartRelated) messageMimeKit.Body; 
var body = (MimePart) related[0]; 

// It's possible that the filename on the HTML body is confusing Outlook. 
body.FileName = null; 

// It's also possible that the Content-Location is confusing Outlook 
body.ContentLocation = null; 
+0

Salut Jeffrey, désolé pour la réponse tardive. Merci pour votre réponse. J'ai défini à la fois le FileName et ContentLocation à null et il semble maintenant bien dans Outlook. – ET67