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

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

Нравится

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

У меня на 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});	 
}

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

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