Отправка встроенных вложений с помощью ews - PullRequest
1 голос
/ 24 января 2012

Я использую EWS для отправки электронного письма с вложенными приложениями.

Я использую для этого следующий код:

var attachment = attachments.AddFileAttachment(path);
attachment.ContentId = cid;
attachment.IsInline = true;
attachment.ContentType = "PNG/Image";

HTML-текст сообщения содержит следующий фрагмент

<img src=""cid:{cid}""></img>

где {cid} - это значение поля cid .

Работает, когда я проверяю электронную почту с помощью Outlook, но в OWA изображение не отображается в теле сообщения.

Пожалуйста, предложите мне правильный способ отправки почты со встроенным изображением через EWS для просмотра в OWA.

1 Ответ

2 голосов
/ 29 июня 2015

Приведенный ниже код работает для меня, и я вижу встроенное вложение в Outlook / OWA / Mobile.

Шаги:

  1. Тело HTML с заполнителями для содержимого

  2. Заменить эти заполнители фактическим содержанием вложения

  3. Создайте новое вложение и установите свойства inline (true) и contentid (фактическое contentid для связанного вложения)

        string attachment = "c:\\inlineattachment.png";
    
        // Create an e-mail message using the ExchangeService.
        EmailMessage message = new EmailMessage(ExchangeServiceObject);
    
        // Subject
        message.Subject = "Email with inline attachments";
    
        // Message body with place holder for contentid
        message.Body = "Email body with inline attachment </br> <img src=\"cid:{0}\">";
        message.Body.BodyType = BodyType.HTML;
    
        // Replace the place holder with contentid
        // Random GUID is used to avoid name collision for contentids 
        string newGuid = Guid.NewGuid().ToString();
        message.Body = string.Format(message.Body, newGuid);
    
        // Create a new attachment and add necessary properties to make it inline
        message.Attachments.AddFileAttachment(attachment);
        message.Attachments[message.Attachments.Count - 1].IsInline = true;
        message.Attachments[message.Attachments.Count - 1].ContentId = newGuid;
    
        // Add recipeint
        message.ToRecipients.Add("recipient@domain.com");
    
        // Send the e-mail message and save a copy.
        message.SendAndSaveCopy();
    
...