Форум продуктов IBM Lotus

Общие вопросы => Разработка приложений => Тема начата: ShurikDM от 09 Октябрь 2009, 16:36:20

Название: Как отправить письмо в агенте на Lotus Script?
Отправлено: ShurikDM от 09 Октябрь 2009, 16:36:20
Господа! Возник вопрос, как отправлять письма-уведомления?. Агент писан на Lotus Script, запускается по расписанию. Как известно, функция Evaluate с @MailSend не работает. Подскажите, как решить проблему средствами скрипта или посоветуйте "обходной маневр". Заранее спасибо!
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: nadya от 12 Октябрь 2009, 08:07:54
что то вроде
...
Dim doc as notesdocument
Dim recipients( 1 To N ) As String
recipients( 1 ) = "recipient_1"
...
recipients( N ) = "recipient_N"
.....
doc.form = "Notice"
Call doc.send( fasle, recipients)

Не подойдет?
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: ShurikDM от 12 Октябрь 2009, 12:43:24
Спасибо! Это как вариант, но я хотел бы что-нибудь более простое, без прикрепления формы к документу (как следствие - засорение базы ненужными уведомлениями). Более того, я хотел бы по аналогии с @MailSend отправить обычное письмо со ссылкой на требуемый документ в моей базе
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: lotusnotes.ru от 15 Октябрь 2009, 11:21:00
О каком засорении речь? Если не сохранять документ, то в базе он и не останется. Ну или можно автоматически удалять другим агентом эти уведомления.
В LotusScript так просто, как с @MailSend, не получится, вариант, предложенный nadya, вполне адекватный. А в теле письма (поле Body) уже добавляете любой текст и, например, ссылку.
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: ShurikDM от 15 Октябрь 2009, 13:34:52
Спасибо. Решил проблему посылом всей формы. Как ее прикрепить к простому письму, так и не догнал. А как в тело ссылку на этот документ вставить?
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: lotusnotes.ru от 15 Октябрь 2009, 17:42:18
Форму нужно использовать Memo, а в поле Body - все тело письма (Subject - тема и т.д.), в поле Body можно писать текст и все остальное.

Пример:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim mailDoc As NotesDocument
Dim rtbody As notesRichTextItem

Set db = s.CurrentDatabase
Set mailDoc = db.CreateDocument

Set rtbody = New NotesRichTextItem(mailDoc, "Body")
Call rtbody.AppendText("Поступил новый документ")

mailDoc.Form = "Memo"
mailDoc.Principal = "noreply@lotusnotes.ru"
mailDoc.SMTPOriginator = "noreply@lotusnotes.ru"
mailDoc.DisplaySent = "Post agent"
mailDoc.Subject = "Оповещение"
mailDoc.Importance = "1"
mailDoc.SendTo = "usertosendmessage@lotusnotes.ru"
Call mailDoc.Send(False)
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: lotusnotes.ru от 15 Октябрь 2009, 17:43:37
Методами объекта NotesRichTextItem (поле Body) как раз и можно добавлять ссылки и другие элементы в тело письма
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: nadya от 16 Октябрь 2009, 09:11:58
ссылку, если нужно, можно вставить так
...
Dim rtitem As NotesRichTextItem
Set rtitem = New NotesRichTextItem( newDoc, "Body" )
Call rtitem.AppendDocLink( db, db.Title )
...

нужно использовать метод AppendDocLink
Call notesRichTextItem.AppendDocLink( linkTo, comment$ [, HotSpotText$ ] )
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: lotusnotes.ru от 16 Октябрь 2009, 12:18:45
nadya, спасибо за дополнение!
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: ShurikDM от 20 Октябрь 2009, 17:01:03
Спасибо большое, ребят!
Название: Re: Как отправить письмо в агенте на Lotus Script?
Отправлено: Akimchik от 17 Ноябрь 2016, 14:34:19
Форму нужно использовать Memo, а в поле Body - все тело письма (Subject - тема и т.д.), в поле Body можно писать текст и все остальное.

Пример:
Dim s As New NotesSession
Dim db As NotesDatabase
Dim mailDoc As NotesDocument
Dim rtbody As notesRichTextItem

Set db = s.CurrentDatabase
Set mailDoc = db.CreateDocument

Set rtbody = New NotesRichTextItem(mailDoc, "Body")
Call rtbody.AppendText("Поступил новый документ")

mailDoc.Form = "Memo"
mailDoc.Principal = "noreply@lotusnotes.ru"
mailDoc.SMTPOriginator = "noreply@lotusnotes.ru"
mailDoc.DisplaySent = "Post agent"
mailDoc.Subject = "Оповещение"
mailDoc.Importance = "1"
mailDoc.SendTo = "usertosendmessage@lotusnotes.ru"
Call mailDoc.Send(False)

У меня смежная проблема но я пытаюсь на несколько адресатов отослать письмо

' Определяем адрес получателя
Dim arRec As Variant
arRec = curdoc.GetItemValue("email")
If Isarray(arRec) Then
rec = arRec(0)
Else
rec = arRec
End If
If rec ="" Then Msgbox "В РКК документа не указан E-mail" , , "Error"

ReDim preserve arRec(ubound(arRec)+1)
arRec(ubound(arRec))= curdoc.GetItemValue("email_3")(0)
rec=arRec


в итоге приходит только на одного адресата который в поле Email, Email_3 заполняется автоматически @формулами и может содержать 0-2 адресата но письмо в итоге не приходит, пока что не знаю в какую сторону копать, подсобите