• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Отправка Писем Из Ms Office

  • Автор темы s106
  • Дата начала
Статус
Закрыто для дальнейших ответов.
S

s106

Помогите разобраться со следующей ситуацией.
Возникла необходимость организовать рассылку писем в Lotus Notes средствами MS Office (из Excel). Насколько я понял, делаться это должно примерно такой процедурой на VBA :

Set Session = CreateObject("Lotus.NotesSession")
Call Session.Initialize("пароль")
Set Maildb = Session.GETDATABASE("", "C:\Program Files\lotus\notes\data\bookmark.nsf")
If Not Maildb.IsOpen = True Then
Call Maildb.Open
End If
Set MailDoc = Maildb.CREATEDOCUMENT
Call MailDoc.ReplaceItemValue("Form", "Memo")
Call MailDoc.ReplaceItemValue("SendTo", "адрес")
Call MailDoc.ReplaceItemValue("CopyTo", "адрес")
Call MailDoc.ReplaceItemValue("BlindCopyTo", "адрес")
Set Body = MailDoc.CREATERICHTEXTITEM("Body")
Call Body.APPENDTEXT("текст письма")
Call Body.ADDNEWLINE(2)
Call Body.EMBEDOBJECT(1454, "", "файл вложения")
MailDoc.SAVEMESSAGEONSEND = True
Call MailDoc.ReplaceItemValue("PostedDate", Now())
Call MailDoc.SEND(True)
Set MailDoc = Nothing
Set Body = Nothing
Set Maildb = Nothing
Set Session = Nothing

Сколько смотрел, везде советуют делать примерно так, однако у меня почему-то возникают проблемы.
Письмо в общем-то отправляется, однако текст письма отсутствует. Объект "Body", который по дее должен его содержать, почему-то передает только вложенный файл, а текст письма - не передает.
Более того, среди отправленных писем в их объектной модели я не смог найти поля, отвечающего за текст письма. Поля "Body" там вообще не было, были только
Title Site URLIcon URL Form Collaborators SourceForm $UpdatedBy, и ни в одном из них текста не содержалось.
Версия Lotus Notes стоит 8.5. Может быть, в ней поменялось что-то в структуре писем?
Знает кто-нибудь, где в Lotus Notes 8.5 содержится текст письма? И есть ли где - нибудь описание документа Lotus Notes 8.5 с его полями и методами?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 941
609
BIT
215
И есть ли где - нибудь описание документа Lotus Notes 8.5 с его полями и методами?
странный вопрос :eek:
вам какое описание:
- на уровне СиАПИ - хелп по СиАПИ и поиск в тырнете (но это врядли вам нужно)
- на уровне объекта - хэлп дизигнера
письма - это обычные доки LDN
поле body - это RichText поле (такой тип), собсно в нём и содержится (обычно) текст письма
 
S

s106

странный вопрос :eek:
- на уровне объекта - хэлп дизигнера

Ну дело-то в том, что на моем компьютере, как и на прочих тут, дизигнера этого нету... Насколько понимаю, его надо отдельно устанавливать... И я даже не знаю, можно ли его так вот например скачать и поставить в дополнение к клиентской части?
Поэтому хэлп от него найти бы - уже хорошо. В сети видел что-то похожее от 5-й версии, 8.5 не находил...

письма - это обычные доки LDN
поле body - это RichText поле (такой тип), собсно в нём и содержится (обычно) текст письма

Собственно говоря, так везде и пишут, но почему-то найти его у меня не получается.
Получаю, например, документ (отправленное письмо):

Set Collection = Maildb.AllDocuments
Set docB = Collection.GetnthDocument(i)

Смотрю у него там поля (Items), они какие-то такие:

Title Site URLIcon URL Form Collaborators SourceForm $UpdatedBy

А Body среди них почему-то нету, и где там в них текст письма спрятан, тоже непонятно... Соответственно, когда создаю этот Body, как выше написал, то текст в нем все равно не передается, хотя вложенный файл передается. Не могу понять, в чем дело-то...
 
S

s106

Спасибо большое за ссылку.

Вопросы же остаются...
Там, к примеру, написано:

1.This example prints the name of every item in a document. For example, if the document contains five items, the script might print "From," "SendTo," "Subject," "Body," and "DeliveredDate."

Замечательно, кабы оно так и у меня отображалось, однако вижу у себя другое (см.выше)

Може ли быть, что из редактора Excel VBA как-то все криво видно? Может, прописать там надо в references что-то? Или необходимо Designer установить?

Я Lotus этот неделю назад впервые увидел, поэтому могу какие-то вещи там примитивные не знать, прошу уж извинить... Раньше Outlook'ом пользовался, там все понятно было...
 

Medevic

Что это ? :)
Green Team
10.12.2004
3 334
1
BIT
4
Попробуй Call Body.Update() перед отправкой сделать.
 

Мыш

Lotus Team
12.02.2008
1 220
29
BIT
68
Попробуйте с False. Или Вам форма в док-те принципиально необходима?
PS. Попробовал Ваш скрипт из VBS-файла - с send(False) и созданием письма не в bookmark.nsf, а в почтовой базе пользователя (правда, в варианте с False, полагаю, это непринципиально). Все работает нормуль - и текст, и файл на месте. И поля все тоже.
PPS. В bookmark.nsf нет формы Memo - так что пробуйте с False. :eek:
 
S

s106

Мыш, спасибо большое!

С False действительно все работает. В общем-то так и думал, что где-то что-то не то по незнанию поставил... Ну ладно, дальше, думаю, разберусь...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!