• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Openmail

  • Автор темы Автор темы wowa
  • Дата начала Дата начала
W

wowa

Добрый день!

Есть кусок кода.
Код:
Dim dbMail As New NotesDatabase( "", "" )
Call dbMail.OpenMail()

Год все работало нормально, тут у одного человека где-то выскочила ошибка. На какой строчке я не знаю.
Ошибка:
Database CN=.../..../...!!mail/....nsf has not been opened yet

Что можно сделать чтобы этой ошибки не было и все-таки из-за чего она возникает?
вроде у человека почта есть, доступ есть и т.д.
 
Похоже, ошибка где-то ниже. Стоит добавить проверку на dbMail.IsOpen
 
nvy, ну ошибка будет полюбому ниже.
Но почему его почтовая база не открылась?
 
если локейшин не настроен ошибка должна быть полюбому :)
 
wowa
Ошибка иногда возникает даже если локейшен настроен правильно... объяснить это невозможно, этот баг я помню ещё с 5-й версии...
Решение - не юзать глючную OpenMail, а что-то типа этого:
Код:
'Библиотека MailBase
Option Public

Const FND_APPOINTMENT = "Appointment"
Const FND_REPLY = "Reply"
Const FND_MEMO = "Memo"
Const IN_MEMO_SUBJECT = "Subject"
Const IN_MEMO_BODY = "Body"
Const IN_MEMO_SENDTO = "SendTo"


Function ConnectMaildb(Server As String, dbPathFull As String) As NotesDatabase
Dim NDB_Mail As NotesDatabase
On Error Goto ErrH

'Подключаемся как к обычной БД, чтобы обойти сообщение "БД сейчас не может быть открыта..." ("Db has not been opened yet")
Set NDB_Mail = New NotesDatabase(Server, dbPathFull)

If NDB_Mail.IsOpen Then
Set ConnectMaildb = NDB_Mail
Exit Function
Else
Error 4063, {Почтовая база "} + dbPathFull + {" на сервере "} + Server + {" не может быть открыта... Проверьте настройки текущего места вызова!}
End If

ErrH:
If Err = 4060 Then
ErrMSG$ = {Отсутствует доступ к почтовой базе "} + dbPathFull + {" на сервере "} + Server + {"... Измените текущее место вызова!}
Else
ErrMSG$ = Error$ & " (" & Err & "), in line: " & Erl & "!"
End If

Messagebox ErrMSG$, 64, "Lotus Notes..."
Err = 0
Exit Function
End Function


Function GetMaildb() As NotesDatabase

userMAIL = Evaluate(|@MailDbName|)

Set GetMaildb = ConnectMaildb(userMAIL(0), userMAIL(1))

End Function
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab