В случае проблем с отображением картинки в теле письма

Всем привет!

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

Для решения, нужно немного изменить функцию CopyAttachment:

function CopyAttachment(DestinationMailItem, Attachment, TempFolder) {
         var PR_ATTACH_MIME_TAG = 'http://schemas.microsoft.com/mapi/proptag/0x370E001F';
         var PR_ATTACH_CONTENT_ID = 'http://schemas.microsoft.com/mapi/proptag/0x3712001F';
         var OutlookVersion = new String(Attachment.Application.Version).substr(0, 2);

         var AttachmentType = Attachment.Type;
         var FileName = TempFolder + '\\' + Attachment.DisplayName;
         try {
                   Attachment.SaveAsFile(FileName);
         } catch(e) {
                   Log.Write(lmtWarning, e.message);
                   return
         }
         NewAttachment = DestinationMailItem.Attachments.Add(FileName, AttachmentType);
         if (OutlookVersion >= 12) {
                   var sPA = Attachment.PropertyAccessor;
                   var dPA = NewAttachment.PropertyAccessor;
                   var sMIME_TAG = sPA.GetProperty(PR_ATTACH_MIME_TAG);
                   var sCONTENT_ID = sPA.GetProperty(PR_ATTACH_CONTENT_ID);
                   if (!IsEmptyValue(sCONTENT_ID)) {
                            dPA.SetProperty(PR_ATTACH_MIME_TAG, sMIME_TAG);
                            dPA.SetProperty(PR_ATTACH_CONTENT_ID, sCONTENT_ID);
                   }
         } else {
                   Outlook.Plugin.SetAttachmentAsEmbedded(Attachment, NewAttachment);
         }
         NewAttachment = null;
}                            

function CopyAttachments(SourceMailItem, DestinationMailItem, OnlyEmbedded) {
         if (!HasItemAttachments(SourceMailItem)) {
                   return;
         }
         var TempFolder = System.GetTempDirName(TemporaryFilePrefixName + 'Attachments');
         CreateFolder(TempFolder);
         var Attachment;
         for (var i = 1; i = SourceMailItem.Attachments.Count; i++) {
                   Attachment = SourceMailItem.Attachments.Item(i);
                   if (OnlyEmbedded && !IsEmbeddedAttachment(Attachment)) {
                            continue;
                   }
                   CopyAttachment(DestinationMailItem, Attachment, TempFolder);
         }
         Attachment = null;
}

Данная реализация подойдет для 3.3.1 и3.3.2.

С уважением,
Белецкий Арсений
и.о. Руководителя I линии поддержки
Группа компаний Terrasoft

Нравится

0 комментариев
Показать все комментарии