Форум продуктов IBM Lotus
Общие вопросы => Разработка приложений => Тема начата: K85 от 02 Октябрь 2012, 18:23:43
-
Помогите, пожалуйста, разобраться.
в агенте заполняется перечень тех, кому отправляется письмо
………
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)
В самой форме письма изменена кнопка "отправить", в новой кнопке меняются некоторые поля:
Call doc.ReplaceItemValue("Principal"," ")
Call doc.ReplaceItemValue("$INetPrincipal"," данные")
…………
Call doc.ReplaceItemValue("Form","Memo")
………..
'Далее сохраняется и вызывается агент
Call doc.Save( False, True )
Set agent = db.GetAgent("агент")
Call agent.RunOnServer(doc.NoteID)
………
Call doc.ReplaceItemValue("MailOptions","0")
Call uidoc.Save
uidoc.Close
Все бы хорошо, отправляется всем кто указан в поле Кому, отправляется с нужными изменениями, НО отправляется и при этом не заполняются все нужные поля в Отправленных , например $MessageID, $Orig , а в полученном письме эти поля заполнены
Как можно заполнить при отправке эти поля? Надо чтобы потом это письмо можно было отозвать потом
-
Вы почтовый шаблон правите?
-
да, в почтовой базе переделываю отправку писем
-
Тогда лучше не заменять код на кнопке, а добавить свои скрипты в библиотеку CoreEmailClasses.
Там в функции QuerySave есть секция для MEMO_SEND.
Вроде бы она вызывается при стандартной отправке.
-
были и такие попытки, но при указании в библиотеки ("Principal"," ") и других полей, в дебагере видно, что они меняют значение на нужное, но прям перед отправкой опять меняются и отправляются неизмененые
-
Ладно, а какая перед вами задача стоит?
-
мне надо отправлять из определенной почтовой базы письма от определенного сотрудника , например Тест. В базе заполняет тело письма, выбирает список Кому отправить и отправляет письмо например Админ, в полученном письме не должно быть указано "От:" , просто отправителем должен указываться Тест. Но при этом необходимо, чтобы при необходимости письмо можно было бы отозвать
-
Сервер все равно будет перезаписывать поле "From" пользователем от кого реально отправлено письмо или кем подписан агент. Вроде можно в настройках сервера это отключить, но будет тогда несекьюрно.
Чтобы обойти это, можно создавать документ для отправки прямо в mail.box сервера.
-
в моем варианте тоже не записывает от кого отправляет, но появилась проблема из-за того, что не все служебные поля заполнены, нельзя Отозвать письмо
-
а может можно по перечню из поля Кому и idписьма удалить агентом это письмо? Пока не знаю в какую сторону копать...
-
Пробую отправлять письма через mail.box:
Set mailbox=ses.GetDatabase(db.Server, "mail.box", False)
Set ndoc=mailbox.CreateDocument
Call doc.CopyAllItems(ndoc, True)
Call ndoc.ReplaceItemValue("PostedDate", Now)
Call ndoc.ReplaceItemValue("ReplyTo", "")
Call ndoc.ReplaceItemValue("Principal", "имя")
Call ndoc.ReplaceItemValue("From", "имя")
ndoc.RemoveItem("RoutingState")
ndoc.RemoveItem("RoutingStateBy")
...
отправляется письмо верно, указывается отправитель в полученном письме тот, что нужен, но отозвать нельзя.
Пробую агентом заполнять $MessageID, письмо с отчетом отзыва зависает в mail.box и в логах пишет "failed to be recalled by".
Отзывать пробую и тем, кто отправил письмо и тем пользователем, который указан в Кому, когда письмо приходит
Скоро с ума сойду...
Добавляю в библиотеку "CoreEmailClasses_ru-RU"
Call Me.m_noteMemo.RemoveItem("$AssistMail")
Call Me.m_noteMemo.RemoveItem("$MessageID")
Ничего не дает....
Если на измененной кнопке Отправки добавить:
vSubjectBlankSend = False
Call cMemoObject.SetActionInProgress(MEMO_SEND)
тогда отправится 2 письма: одно такое как надо, второе уже с полными данными (и теми полями, которые не нужны)... Если убрать эти строки, то отправляется письмо 1 , оно приходит с нужными полями, но в Отправленных остается письмо без нужных полей (например, нет $MessageID)
Если перед send добавить
Call Doc.ReplaceItemValues("$Orig", Doc.UniversalID)
то добавляется поле $Orig, пока не знаю какой параметр отвечает за MessageID