Прикрепление файла к письму в действии "Отправка E-mail"
Здравствуйте!
3.4.0.117
Подскажите, пожалуйста, каким образом при отправке письма действием "Отправка E-mail" можно автоматически прикрепить файл.
З.Ы. ID файла хранится в параметре процесса.
Нравится
У меня на 3.3.2 отправка с вложением делалась так:
//сохраняем файл 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; };
Где TemplateID - шаблон сообщения, FileLink - имя файла, которое будет во вложении.
Но это не из бизнес-процесса. Надо смотреть, как почта отправляется оттуда.
Спасибо, Александр!
Дело в том, что в версии 3.4.0 есть специальное действие для отправки E-mail сообщений и мне не хотелось бы использовать действие скрипт для решения задачи.
Здравствуйте, Геннадий!
В коробочной карточке действия "Отправка Email" присоединение файлов не предусмотрено.
Можно произвести программную доработку действия бизнес-процесса wa_SendEmail для реализации поддержки отправки файлов, однако это несколько сложнее, чем добавить скрипт к процессу. Поэтому важно оценить целесообразность и выбрать оптимальный вариант из двух.
Анна, можете добавить что-то к комментарию Александа (я имею ввиду программный код).
Геннадий, уточните, пожалуйста, что именно у Вас не получается, и какие комментарии Вы хотели бы получить?
Вот мой пример реализации отправки факсового сообщения через электронную почту средствами Oktell (из блога Виталия Ковалишина).
В этой функции прикрепляется файл изображения к письму и отправляется при помощи Outlook. Для увеличения быстродействия файл не сохраняется в БД. Пример упрощен для наглядности :smile: Версия Terrasoft 3.4.0.136.
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}); }
Евгений, благодарю за интересную реализацию! Данное решение будет очень популярно - многие клиенты хотели бы настроить электронный документооборот таким образом :)