Ошибка изменения названия вложений при рассылке (добавляется расширение TSTmp)

В версиях 3.3.1 и 3.3.2 может возникнуть ситуация, когда при отправке рассылки, все вложения приходят в неправильном формате.

Например, в шаблоне письма должен находится документ word.doc, а после получения письма, данное влежение будет в формате TSTmpword.docTSTmp или word.docTSTmp.

Для исправлениея данной ошибки, необходимо в TSAdmin.exe открыть сервис scr_OutlookUtils.
В этом сервисе необходимо обновить методы CopyAttachment и CopyAttachments:

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

Сохраняем сервис и проверяем рассылку.

С уважением
Белецкий Арсений
Группа компаний Terrasoft

Нравится

Поделиться

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