Я пытаюсь создать MailMessage и установить к нему различные вложения. Встроенные вложения всегда отображаются для получателя в формате jpeg, png или других файлов изображений, если я добавляю их как тип вложения. Код, который я использовал для этого подхода:
var mailMessage = new MailMessage();
// Set To, From, Body, Subject, etc.
foreach(var att in self.Attachments) {
byte[] content = att.GetBytes();
var attachment = new Attachment(new MemoryStream(content), att.Name);
if(att.IsInline){
attachment.ContentId = att.Name;
attachment.ContentDisposition.Inline = true;
attachment.ContentDisposition.DispositionType = DispositionTypeNames.Inline;
}
mailMessage.Attachments.Add(attachment)
}
var view = AlternateView.CreateAlternateViewFromString(mailMessage.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
mailMessage.AlternateViews.Add(view);
Если я добавлю их как LinkedResource, они отобразятся в виде файлов данных в разделе вложений. Код:
var mailMessage = new MailMessage();
// Set To, From, Body, Subject, etc.
var view = AlternateView.CreateAlternateViewFromString(mailMessage.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
foreach(var att in self.Attachments) {
byte[] content = att.GetBytes();
if(att.IsInline) {
var inline = new LinkedResource(new MemoryStream(content), att.ContentType);
inline.ContentId = att.Name;
view.LinkedResources.Add(inline);
}
else {
mailMessage.Attachments.Add(new Attachment(new MemoryStream(content),
att.Name));
}
}
mailMessage.AlternateViews.Add(view);
Оба подхода генерируют правильное электронное письмо и вставляют встроенные вложения в тело электронного письма. Не отображайте встроенные вложения в разделе вложений при предварительном просмотре электронной почты в Outlook. Оба показывают встроенные вложения при получении электронной почты в Outlook. Я убедился, что настройки Outlook в разделе почты параметров Outlook следующие: «Создать сообщение в этом формате: HTML» и «При отправке сообщений в формате RTF получателям в Интернете: преобразовать в формат HTML».
Мы будем очень признательны за любые предложения, так как дополнительные вложения создают путаницу для конечных пользователей.