Публикация
Ошибка изменения названия вложений при рассылке (добавляется расширение TSTmp)
30 марта 2012 09:36
В версиях 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;
}
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
Показать все комментарии
Войдите или зарегистрируйтесь, что бы комментировать