отправка писем по кнопке

Автор Тема: отправка писем по кнопке  (Прочитано 16851 раз)

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« : 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 , а в полученном письме эти поля заполнены
Как можно заполнить при отправке эти поля? Надо чтобы потом это письмо можно было отозвать потом

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
отправка писем по кнопке
« Ответ #1 : 02 Октябрь 2012, 18:36:49 »
Вы почтовый шаблон правите?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #2 : 02 Октябрь 2012, 18:41:41 »
да, в почтовой базе переделываю отправку писем

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
отправка писем по кнопке
« Ответ #3 : 02 Октябрь 2012, 18:48:29 »
Тогда лучше не заменять код на кнопке, а добавить свои скрипты в библиотеку CoreEmailClasses.
Там в функции QuerySave есть секция для MEMO_SEND.
Вроде бы она вызывается при стандартной отправке.

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #4 : 02 Октябрь 2012, 18:53:31 »
были и такие попытки, но при указании в библиотеки ("Principal"," ")  и других полей, в дебагере видно, что они меняют значение на нужное, но прям перед отправкой опять меняются и отправляются неизмененые

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
отправка писем по кнопке
« Ответ #5 : 02 Октябрь 2012, 19:19:41 »
Ладно, а какая перед вами задача стоит?

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #6 : 03 Октябрь 2012, 09:57:39 »
мне надо отправлять из определенной почтовой базы письма от определенного сотрудника , например Тест. В базе заполняет тело письма, выбирает список Кому отправить и отправляет письмо например Админ, в полученном письме не должно быть указано "От:" , просто отправителем должен указываться Тест. Но при этом необходимо, чтобы при необходимости письмо можно было бы отозвать
« Последнее редактирование: 03 Октябрь 2012, 10:21:51 от K85 »

ViV

  • Global Moderator
  • Профессионал
  • *****
  • Сообщений: 1428
  • Владимир Егоров
    • Просмотр профиля
    • lotusnotes.ru
    • E-mail
отправка писем по кнопке
« Ответ #7 : 03 Октябрь 2012, 18:32:18 »
Сервер все равно будет перезаписывать поле "From" пользователем от кого реально отправлено письмо или кем подписан агент. Вроде можно в настройках сервера это отключить, но будет тогда несекьюрно.

Чтобы обойти это, можно создавать документ для отправки прямо в mail.box сервера.

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #8 : 03 Октябрь 2012, 19:12:21 »
в моем варианте тоже не записывает от кого отправляет, но появилась проблема из-за того, что не все служебные поля заполнены, нельзя Отозвать письмо

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #9 : 03 Октябрь 2012, 19:17:47 »
а может можно по перечню из поля Кому и idписьма удалить агентом это письмо? Пока не знаю в какую сторону копать...

K85

  • Старший специалист
  • ****
  • Сообщений: 127
  • http://nick-name.ru/sertificates/727639/
    • Просмотр профиля
отправка писем по кнопке
« Ответ #10 : 09 Октябрь 2012, 15:19:25 »
Пробую отправлять письма через 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
« Последнее редактирование: 14 Октябрь 2012, 17:27:36 от K85 »