2016-09-25 3 views
0

У меня есть документ слова и с помощью Aspose.Word для выполнения слияния почты и сохранить результат в поток памяти, как MHTML (часть моего кода):mimekit перспективы показать текст как вложение

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); 

Тогда я использовать MimeKit (последняя версия от NuGet), чтобы отправить мое сообщение:

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); 
} 

при открытии полученной электронной почты в веб-клиенте почты, я вижу текст (с изображением) и изображение в качестве вложения.

При открытии полученного письма в Outlook (2016) почтовый ящик пуст, и у меня есть два вложения, 1 с текстом и 1 с изображением.

Глядя на сам содержание MHT, это выглядит следующим образом:

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=---- 

Есть некоторые элементы форматирования или так что я должен сделать, чтобы получить это правильно показано в Outlook? Или это вызвано найденными «3D» ключевыми словами, такими как content = 3D «xxxx», style = 3D «xxxx»?

Заранее спасибо.

Эдвард

ответ

0

В =3D биты являются quoted-printable кодирование = характера. Поскольку заголовки должным образом объявляют Content-Transfer-Encodingquoted-printable, это не проблема.

Вот несколько советов о том, пытаясь массировать содержание во что-то, что будет работать в Outlook (Перспективы очень привередливы):

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

Привет Джеффри, извините за поздний ответ. Спасибо за ответ. Я установил значение FileName и ContentLocation равным null, и теперь он выглядит хорошо в Outlook. – ET67

Смежные вопросы