Бизнес-процессы
Разработка

Прикрепление файла к письму в действии "Отправка E-mail"

Здравствуйте!
3.4.0.117
Подскажите, пожалуйста, каким образом при отправке письма действием "Отправка E-mail" можно автоматически прикрепить файл.
З.Ы. ID файла хранится в параметре процесса.

Нравится

8 комментариев

У меня на 3.3.2 отправка с вложением делалась так:
[javascript]
//сохраняем файл
var FileName = LoadFileFromDatabase(FileID, FileLink, true, true);

//цепляем во вложение
var Attachments = [FileName];

var IDs = new Array();
IDs.push(ID);
var MailParams = new Object();
MailParams.TemplateID = TemplateID;
MailParams.IDs = IDs;
MailParams.Attachments = Attachments;
var Service = Services.GetSingleItemByUSI('scr_MailUtils');
try {
Service.ScriptControl.CodeObject.SendEmailByTemplate(MailParams.TemplateID,
MailParams);
} catch (e) {
ShowErrorDialog("Ошибка при отправке сообщения. Проверьте настройки Outlook");
Log.write(2, e.message);
return;
};
[/javascript]

Где TemplateID - шаблон сообщения, FileLink - имя файла, которое будет во вложении.

Но это не из бизнес-процесса. Надо смотреть, как почта отправляется оттуда.

Спасибо, Александр!

Дело в том, что в версии 3.4.0 есть специальное действие для отправки E-mail сообщений и мне не хотелось бы использовать действие скрипт для решения задачи.

Здравствуйте, Геннадий!

В коробочной карточке действия "Отправка Email" присоединение файлов не предусмотрено.

Можно произвести программную доработку действия бизнес-процесса wa_SendEmail для реализации поддержки отправки файлов, однако это несколько сложнее, чем добавить скрипт к процессу. Поэтому важно оценить целесообразность и выбрать оптимальный вариант из двух.

Анна, можете добавить что-то к комментарию Александа (я имею ввиду программный код).

Геннадий, уточните, пожалуйста, что именно у Вас не получается, и какие комментарии Вы хотели бы получить?

Все получается. Спасибо.

Вот мой пример реализации отправки факсового сообщения через электронную почту средствами Oktell (из блога Виталия Ковалишина).
В этой функции прикрепляется файл изображения к письму и отправляется при помощи Outlook. Для увеличения быстродействия файл не сохраняется в БД. Пример упрощен для наглядности :smile: Версия Terrasoft 3.4.0.136.
[javascript]
function amiFaxOnExecute(ActionMenuItem, Sender) {
var FileName = System.CreateObject('TSObjectLibrary.Value');
var DialogCaption = "Выбор файла FAX";
var DefaultExt = '*.jpg';
var IMGFilter = "Файл изображения" + ' (*.jpg)|*.jpg|(*.tif)|*.tif|(*.bmp)|*.bmp';
if (!(System.OpenDialog(FileName, IMGFilter , DefaultExt, DialogCaption, EmptyStr))) {
return;
}
var FullName = FileName.Value; // Полный путь с именем файла и расширением
var ShortFileName = ExtractFileName(FullName); // имя файла с расширением

var EmailSubject = GetFieldValueFromDisabledField(Dataset,'PhoneNumber') // Тема письма (номер телефона)
var AddressList = new Array();
AddressList[0] = 'support@terrasoft.ua'; // Адрес получателя
var Body = 'Fax Message'; // Тело письма
var FileSystemObject = GetFileSystemObject();

var AttachList = new Array();
AttachList.push(FullName);

SendEmail({Body: Body, BodyFormat: 1, Attachments: AttachList, Subject: EmailSubject, Address: AddressList});
}
[/javascript]

Евгений, благодарю за интересную реализацию! Данное решение будет очень популярно - многие клиенты хотели бы настроить электронный документооборот таким образом :)

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