Скрытие встроенных вложений от получателя

Я пытаюсь создать 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».

Мы будем очень признательны за любые предложения, так как дополнительные вложения создают путаницу для конечных пользователей.


person adam    schedule 08.09.2015    source источник
comment
Я когда-то сделал это, и был способ. Я не помню, что это было. Я узнал это, установив для каждой опции все возможные значения во всех комбинациях. Затем я отправил эти десятки писем в свой Outlook и выбрал наилучшую комбинацию настроек. Это выполнимо.   -  person usr    schedule 09.09.2015


Ответы (1)


Я наткнулся на этот вопрос, имея ту же проблему, и для меня решением было добавить тип вложения.

Изменить это

var inline = new LinkedResource("logo.png");

К этому

var inline = new LinkedResource("logo.png", "image/png");

Похоже, вы уже делаете это, но, возможно, это не сработало так, как предполагалось?

Спасибо этой странице за предоставленный ответ: https://www.codeproject.com/articles/31897/embed-an-image-in-email-using-asp-net

person Dan Soper    schedule 25.05.2018