Всем привет!
Сегодня хочу поделить настройки Terrasoft для использования нескольких учетных записей в Outlook.
Для чего это нужно?
Например, Вы работаете с личной почтой, но рассылку от компании Вам необходимо выполнить от корпоративной учетной записи.
Таким образом, перед рассылкой, стоит лишь изменить учетную запись по умолчанию и рассылка пойдет как надо.
Но бывает, что данные действия всё равно не приводят к желаемому результату, тогда открываем TS Admin и находим сервис scr_OutlookUtils.
В нем находим функцию CreateNewOutlookMessageByCopy и меняем ее на следующую:
function CreateNewOutlookMessageByCopy(FileName) {
var Message;
if (FileName) {
if ((GetOutlookVersion() == '11.0') || (GetOutlookVersion() == '12.0')) {
Message = Outlook.Application.CreateItemFromTemplate(FileName);
RemoveOutlookMessageProperties(Message);
} else {
TemplateMessage = Outlook.Application.CreateItemFromTemplate(FileName);
RemoveOutlookMessageProperties(TemplateMessage);
Message = Outlook.Application.CreateItem(0);
if (TemplateMessage.SendUsingAccount != null) {
Message.SendUsingAccount = TemplateMessage.SendUsingAccount;
}
RemoveOutlookMessageProperties(Message);
Message.InternetCodepage = TemplateMessage.InternetCodepage;
Message.Subject = TemplateMessage.Subject;
Message.BodyFormat = TemplateMessage.BodyFormat;
var NewMailItemBodyFormat = GetMailItemBodyFormat(Message);
var MessageText;
if ((NewMailItemBodyFormat == olFormatHTML) ||
(NewMailItemBodyFormat == olFormatRichText)) {
MessageText = GetMailItemBody(TemplateMessage);
if (GetMailItemBodyFormat(TemplateMessage) == olFormatPlain) {
MessageText = PreparePlainTextForHTML(MessageText, true);
}
} else {
MessageText = TemplateMessage.Body;
}
CopyAttachments(TemplateMessage, Message, false, Log);
SetMailItemBody(Message, MessageText);
var Recipient;
var SourceRecipient;
for (var i = 1; i = TemplateMessage.Recipients.Count; i++) {
SourceRecipient = TemplateMessage.Recipients.Item(i);
Recipient = null;
if ((!IsEmptyValue(SourceRecipient.EntryID)) &&
(SourceRecipient.AddressEntry.Type != 'EX')) {
Recipient = Message.Recipients.Add(SourceRecipient.Address +
' ' + SourceRecipient.Name + '>');
} else {
Recipient = Message.Recipients.Add(SourceRecipient.Name);
if ((!Recipient.Resolve()) && (!IsEmptyValue(SourceRecipient.EntryID))) {
Recipient.AddressEntry = SourceRecipient.AddressEntry;
}
}
Recipient.Type = TemplateMessage.Recipients.Item(i).Type;
}
TemplateMessage.Delete();
}
} else {
GetOutlookCodePageOut();
Message = Outlook.Application.CreateItem(0);
if (Outlook.CodePageOut) {
Message.InternetCodepage = Outlook.CodePageOut;
} else {
Message.InternetCodepage = 20866;
}
}
return Message;
}
Сохраняем сервис, перезапускаем Terrasoft и проверяем отправку писем.
Приятной работы!
С уважением,
Белецкий Арсений
Группа компаний Terrasoft