Всем привет!
Недавно столкнулся с проблемой отображения картинки в теле письма при отправки из приложения. Картинка уходила во вложении, а на ее месте белый пустой квадрат.
Для решения, нужно немного изменить функцию 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