Помогите новичку

  • Автор темы Frusty
  • Дата начала
F

Frusty

#1
Прошу меня не сильно не ругать, в лотусе разбираюсь вторую неделю
вопрос в следующем Хотелось бы отправить письмо к адрессату изходя из хелпа выполняю следующий код в Агенте
Код:
				 Dim dbMail As NotesDatabase
Set dbMail = New NotesDatabase( "", "")
Call dbMail.Open( "Lotussrv", "ZayavkaIT.nsf" )
Dim MailDoc As NotesDocument
Set MailDoc = New NotesDocument(dbMail)
[u] MailDoc.Form = "NotifHardware"[/u]
  MailDoc.SendTo="xxxx@com.ru"
  MailDoc.Principal = "HelpDesk"
  MailDoc.ReplyTo = "HelpDesk"
  MailDoc.SMTPOriginator = "HelpDesk"
  MailDoc.Subject ="Алеша Привет"
  MailDoc.Body = "Добрый День!"
Call MailDoc.Send(True)
В отладке показывается что MailDoc создается но после исполнения 6 строчки генерится ошибка
Variant does not contain object
PS
Форма NotifHardware создана.
Пожалуйста будьте добры, помогите новичку, обьясните что я делаю не так и как мне послать письмо правильно
 

morpheus

скриптописец
07.08.2006
3 915
1
#2
1. чиатайте правила форума. это я про тему
2. ошибка похоже связана с тем что MailDoc is Nothing . Тоесть документ не создался
Вы уверенны что правильно прописаны сервер и пути к БД
 
F

Frusty

#3
1)Извиняюсь за не правильно созданную тему
2) Обьект создался в отладке видно.
 
D

D!m@n

#4
Call dbMail.Open( "Lotussrv", "ZayavkaIT.nsf" )
Задайте здесь иерархическое имя сервера.
Т.е. Lotussrv/Оргюнит/Организация/Страна.

По-моему, это не сработает.
Надо сделать так:
Код:
Dim RTBody As NotesRichTextItem
Set RTBody=MailDoc.CreateRichTextItem("Body")
RTBody.AppendText("Превед!")
 

NetWood

Lotus team
17.04.2008
372
18
#5
IMHO самый правильный и простой путь поместить документ прямо в mail.box и роутер его отправит куда надо.
Более того есть возможность задать любой адрес отправителя, поскольку при отправке из любой базы или из вашего персономайла
ReplyTo и From берутся из настроек AK

Код:
Sub Initialize
Dim db As NotesDatabase	
Dim dbm As NotesDatabase 	
Dim session As New NotesSession	
Dim note As NotesDocument
Dim mail As NotesDocument 
Dim view As NotesView
Dim homepage As NotesDocument
Set db = session.CurrentDatabase
Set note = session.DocumentContext ' это если забираем все items например из веба 
Set dbm = New NotesDatabase( db.Server, "mail.box" ) 

' ========= помещаем док в mail.box и роутер отправляет 
Set view = db.GetView( "HomePage" )
Set homepage = view.GetFirstDocument ' док с настройками
feedback=homepage.FeedBack(0) ' от кого
email=homepage.Email(0) ' кому

Set mail= New NotesDocument(dbm) 
Call note.CopyAllItems(mail, True) ' скопировать ВСЕ с аттачами и ричтекстами
Call mail.ReplaceItemValue("Form","Memo")
Call mail.ReplaceItemValue("Subject", "Сообщение / "+ note.Subject (0)+" / "+ note.Email (0))
Call mail.ReplaceItemValue("From", feedback)
Call mail.ReplaceItemValue("ReplyTo", feedback)
Call mail.ReplaceItemValue("Recipients", email)
Call mail.ReplaceItemValue("SendTo",email)

Call mail.Save (True,True) 	

Еnd Sub
 

Medevic

Что это ? :)
Lotus team
10.12.2004
3 346
1
#6
По-моему, это не сработает.
Сработает.

Вообще чтобы отправить письмо кому-то, можно создать письмо в текущей базе. Т.е.:
Код:
Dim session As New NotesSession
Dim db As NotesDatabase
Dim MailDoc As NotesDocument
Set db = session.CurrentDatabase
Set MailDoc = db.CreateDocument()
MailDoc.Form = "NotifHardware"
MailDoc.SendTo="xxxx@com.ru"
MailDoc.Principal = "HelpDesk"
MailDoc.ReplyTo = "HelpDesk"
MailDoc.SMTPOriginator = "HelpDesk"
MailDoc.Subject ="Алеша Привет"
MailDoc.Body = "Добрый День!"
Call MailDoc.Send(True)
IMHO самый правильный и простой путь поместить документ прямо в mail.box и роутер его отправит куда надо.
Ну насчет правильного это еще можно поспорить.
А самый простой, имхо, это:
Код:
Dim f As Variant
f = Evaluate({@MailSend(...)})
:)
 

Akupaka

А че я?.. О.о
04.10.2007
3 360
1
#7
IMHO самый правильный и простой путь поместить документ прямо в mail.box и роутер его отправит куда надо.
удобный способ, но не самый простой и не правильный в принципе, т.к. при каких-либо изменениях в работе роутера это может перестать работать...
команды отправки доков сделаны как раз для того, чтобы правильно подготовить отправляемый документ
 

morpheus

скриптописец
07.08.2006
3 915
1
#8
Medevic
ну так можно ж вообще на собаках попробовать

Код:
Address := "xxxx@com.ru";
@Command([MailComposeMemo]);
@UpdateFormulaContext;
@SetField("EnterSendTo"; Address);
@SetField("Form"; "NotifHardware");
@SetField("Principal"; "HelpDesk");
@SetField("Principal"; "HelpDesk");
@SetField("Principal"; "HelpDesk");
и т.д.
команды отправки доков сделаны как раз для того, чтобы правильно подготовить отправляемый документ
100%
 

NetWood

Lotus team
17.04.2008
372
18
#9
при каких-либо изменениях в работе роутера это может перестать работать...
чтобы правильно подготовить отправляемый документ
:) не буду спорить, но просьба прокомментировать.
Это какие такие изменения в роутере. Он или работает или нет. Его работа задается настройками глобал домейна и пр. бубнами
"mail.box - собствнность и забота роутера". Читайте классику :) - Ионцева например.
И что это за правильная подготовка? Есть поля которые надо заполнить по шаблону и форма memo. Это стандарт. Сделано - извольте отправить :)
Вся правильность заключается в заполнении четырех указанных полей. Отправка из баз автозаполняет некотрые поля данными из АК и все. Не надо мистифицировать простые вещи. Примерчик. Тормозните любойл майл в боксе и гляньте свойства дока и поля. Все будет ясно от кого кому...