Доброго времени суток.
Недавно столкнулся с необходимостью не только отправлять сообщения по средствам SMTP и POP3 протоколов, но и хранить отправленное сообщение в
папке "Отправленные" у пользователей. Для того, чтобы это реализовать, нужно было воспользоваться именно учетной записью конкретного пользователя.
Установить соединение с ЕГО клиентом LN и при помощи ЕГО же клиента осуществить отправку.
Есть несколько статей на данную тему, но нигде нет полностью работающего когда, а лишь отрывки.... Попытаюсь исправить ситуацию.
Используемые источники:
http://forum.ru-board.com/topic.cgi?forum=33&topic=0478
http://www.kb.mista.ru/article.php?id=679
Итак, для 1С 7
Процедура Сформировать () ФайлВложения = "C:\123.txt";ЛотусСессия = CreateObject( "Lotus.NotesSession" );Если ЛотусСессия = "" ТогдаТекстОшибки = "Не установлен Lotus Notes !"; Сообщить (ТекстОшибки);Иначе ЛотусСессия.Initialize("ПАРОЛЬ"); ПользовательЛотуса = ЛотусСессия.CommonUserName;ИмяФайлаБд = ЛотусСессия.GETENVIRONMENTSTRING("mailFile", 1); БазаДанных = ЛотусСессия.GETDATABASE("", ИмяФайлаБД);Если БазаДанных.IsOpen=1 Тогда Сообщить ("Лотус готов для работы");Иначе Дирриктория = ЛотусСессия.GETDBDIRECTORY(""); БазаДанных = Дирриктория.OpenMailDatabase();КонецЕсли; ПочтовыйДокумент = БазаДанных.CREATEDOCUMENT(); ПочтовыйДокумент.AppendItemValue ("Form","Memo");ПочтовыйДокумент.AppendItemValue ("subject","test");ПочтовыйДокумент.AppendItemValue ("SendTo","mail@mail.com"); ПочтовыйДокумент.AppendItemValue ("SendTo","mail@mail.com"); ПочтовыйДокумент.AppendItemValue ("Body","тело письма"); ВложениеПисьма = ПочтовыйДокумент.CREATERICHTEXTITEM("Attachment"); ВложенныйОбъект=ВложениеПисьма.EMBEDOBJECT(1454, "", ФайлВложения, "Attachment"); ПочтовыйДокумент.SaveMessageOnSend = 1; ПочтовыйДокумент.Save (1, 0);ПочтовыйДокумент.Send (1);КонецЕсли;КонецПроцедуры
Процедура ОткрытьЛотус(Команда) ФайлВложения = "C:\123.txt"; ЛотусСессия = Новый COMОбъект( "Lotus.NotesSession" ); Если ЛотусСессия = Неопределено Тогда ТекстОшибки = "Не установлен Lotus Notes !"; Сообщить (ТекстОшибки); Иначе ЛотусСессия.Initialize("МойПароль"); ПользовательЛотуса = ЛотусСессия.CommonUserName; ИмяФайлаБд = ЛотусСессия.GETENVIRONMENTSTRING("mailFile", True); БазаДанных = ЛотусСессия.GETDATABASE("", ИмяФайлаБД); Если БазаДанных.IsOpen=True Тогда Сообщить ("Лотус готов для работы"); Иначе Дирриктория = ЛотусСессия.GETDBDIRECTORY(""); БазаДанных = Дирриктория.OpenMailDatabase(); КонецЕсли; ПочтовыйДокумент = БазаДанных.CREATEDOCUMENT(); ПочтовыйДокумент.AppendItemValue ("Form","Memo"); ПочтовыйДокумент.AppendItemValue ("subject","test"); ПочтовыйДокумент.AppendItemValue ("SendTo","mail.mail.com"); ПочтовыйДокумент.AppendItemValue ("Body","тело письма"); ВложениеПисьма = ПочтовыйДокумент.CREATERICHTEXTITEM("Attachment"); ВложенныйОбъект=ВложениеПисьма.EMBEDOBJECT(1454, "", ФайлВложения, "Attachment"); ПочтовыйДокумент.SaveMessageOnSend = Истина; ПочтовыйДокумент.Save (Истина, Ложь); ПочтовыйДокумент.Send (Истина); КонецЕсли; КонецПроцедурыВ принципе, код понятен, сильно объяснять ничего не надо. Показано, как работать с com объектом LN, как создать письмо и прикрепить Аттач.
Недостатки метода - ПАРОЛЬ, и конечно же сам LN ))), но не мы придумываем корпоративные стандарты.
Пароль можно как нибудь шифровать, или набирать разово при первой отправке, а далее хранить где нибудь, допустим, в параметрах сеанса.