Vba & Notes

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#1
Всем привет.
Есть задача отсылать письма из Access.
Решино было использовать COM.
Вопрос вот в чем... как отсылать письмо прозрачно для пользователя?
В ниже приведенном коде почти все работает как надо... кроме того что запускается Notes-клиент.
Хотя по идее не должен бы. Что не правильно?

Код:
	Dim Maildb As Object
Dim UserName As String
Dim MailDbName As String
Dim MailDoc As Object
Dim Session As Object

Set Maildb = Nothing
Set MailDoc = Nothing
Set Session = Nothing

Set Session = CreateObject("Notes.NotesSession")
UserName = Session.UserName
MailDbName = Left$(UserName, 1) & Right$(UserName, (Len(UserName) - InStr(1, UserName, " "))) & ".nsf"

Set Maildb = Session.GETDATABASE("", MailDbName)

If Maildb.IsOpen = False Then
Maildb.OPENMAIL
End If


Set MailDoc = Maildb.CREATEDOCUMENT
MailDoc.Form = "Memo"
MailDoc.sendto = SendTo
MailDoc.Subject = "TEST COM"
MailDoc.Body = "User Text............"
MailDoc.SAVEMESSAGEONSEND = True

MailDoc.SEND 0, Recipient
 

abbatik

Well-Known Member
Lotus team
20.10.2008
277
0
35
Москва
#2
Думаю причина в этом куске:

Код:
If Maildb.IsOpen = False Then
Maildb.OPENMAIL	 
End If
Тем более не очень понятно для чего вы это делаете? Разве нельзя создать документ, не делая Open?
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#3
Тем более не очень понятно для чего вы это делаете? Разве нельзя создать документ, не делая Open?
В том-то и дело что нельзя. Если это выкинуть - то возникает ошибка что база не открыта еще.
Ну а визуально открывается не почтовая база, а просто Notes-клиент
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#5
интересно и как это вы собрались отправлять письмо не уведомя при этом пользователя, да ещё и под его ИД? :huh:
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#6
Не работает

интересно и как это вы собрались отправлять письмо не уведомя при этом пользователя, да ещё и под его ИД? wink.gif
Хорошо.. не правильно выразился... не "прозрачно", а без запуска Notes-клиента, но с запросом пароля... если ничего не путаю - то логин можно вызывать без запуска клиента. Хотя... помнится что можно сделать и без запроса пароля...
 

duchan

Well-Known Member
20.09.2006
108
3
45
Красноярск
#7
Вы немного не тот объект вызываете:
Notes.NotesSession и Notes.NotesUIWorkspace - это OLE - "устаревшие" объекты.
Вызывайте Lotus.NotesSession - это COM, только не забудте авторизироватся... :huh:
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#8
DuChan
Отлично! Спасибо!
Вот только очередное неудобство... каждое письмо требует пароль авторизации :huh:
 

ToxaRat

Чёрный маг
Lotus team
06.11.2007
3 203
24
38
Киев
ToxaRat.com
#9
NickProstoNick
так через ком и пароль можно передать
просто сохраните его у себя в коде в процессе первого запроса(своим инпут боксом)
 

NickProstoNick

Статус как статус :)
Lotus team
22.08.2008
1 785
42
35
Киев
#11
Да это все понятно.... просто VBA - зло!!! :)
Это же надо еще разобраться где держать эту переменную с паролем :(

Хотел приципить файл.. не получилось.. потому на словах...
Кто-нить в курсе по поводу опции Don't promt for a password... в User Security?
Как она работает?

И еще... где можно посмотреть методы доступных COM объектов?