Проблема с пересылкой Mime

  • Автор темы 1KIA
  • Дата начала
1

1KIA

Гость
#1
Есть кнопка, при нажатии на которую, письмо отправляется на эл. почту
кнопка
Код:
	Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument 
Dim collection As NotesDocumentCollection
Dim workspace As New NotesUIWorkspace

Set db = session.CurrentDatabase
Set collection = db.UnprocessedDocuments
Set doc = collection.GetFirstDocument

Do Until doc Is Nothing 
Call doc.Send(True,"почта@ua") 
Call doc.RemoveFromFolder("($InBox)")
Set doc = collection.GetNextDocument(doc)
Loop 
Call collection.UpdateAll 
Call workspace.ViewRefresh
Все работает нормально, но есть проблема
При пересылки писем MIME, выдает сообщение "your current ID does not contain an internet certificate... "
Нашла undefined
но хотелось бы знать, можно ли как-то избежать этих сообщений возможно в самом коде?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#2
ну наверное в форме, кот. тоже (зачем-то) отправлется, есть подпися...
д.б.
Call doc.Send(False,"почта@ua")
что и написано черным по англицки:
you will get this set of dialog boxes:
--MailOptions = "1"
--Form Property: On close: Present Mail Send dialog
--Send Document Form action
--@MailSend with Store form in document
-- @MailSend with the [Sign] flag
т.е. ссылку нашли, а прочитать забыли? :)
 
1

1KIA

Гость
#4
не подскажете, необходимо, чтобы не удалялось полностью из базы, а отправлялось в корзину. Если делаю:
Код:
  Do Until doc Is Nothing 
Call doc.Send() 
Call doc.Remove(True)
Set doc = collection.GetNextDocument(doc)
Loop 
Call collection.UpdateAll 
Call workspace.ViewRefresh
пишет после каждого документа, что он был удален
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#5
есть Sof Deletation (хэлп)
Permanently deletes a document from a database, but does a soft deletion if soft deletions are enabled.
Defined in
NotesDocument
Syntax
flag = notesDocument.Remove( force )
Parameters
force
Boolean. If True, the document is deleted even if another user modifies the document after the script opens it. If False, the document is not deleted if another user modifies it.
Return value
True indicates that the document was successfully deleted.
False indicates that the document was not deleted, because another user modified it and the force parameter is set to False.
Usage
This method does a soft deletion if "Allow soft deletions" is enabled. See RemovePermanently to do a hard deletion.
 

leiba

Well-Known Member
Lotus team
18.06.2010
47
0
#6
пишет после каждого документа, что он был удален
Вы сначала удаляете документ, а потом по нему получаете следующий.
Сделайте наоборот
Код:
Dim doc1 as NotesDocument
Do Until doc Is Nothing
Set doc1 = collection.GetNextDocument(doc) 
Call doc.Send() 
Call doc.Remove(True)
Set doc = doc1
Loop
 
1

1KIA

Гость
#7
надо чтобы отправлялись письма с урезанной темой письма
мне не надо первая часть письма
Код:
s2="*** "
s1=doc.GetItemValue("Subject")(0)
v1 = Strright( s1, s2 )
Call doc.ReplaceItemValue("Subject", v1)
но есть проблема, что в оставшейся части письма могут быть "," ; "." ; " "" " и другие знаки
При наличии каких-либо из перечисленных знаков, письма не отправляются по необходимому адресу
Помогите, пожалуйста
если правильно понимаю, то надо
Код:
Strleft(Strright(s1, s2), ",")
но как вместо одной ", " указать несколько знаков?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#8
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";",":".":"\"";";");";");1)})
проверьте формулу (предварительно, я мог ошибиться с кол-вом скобок и прочая)
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#9
можно привести к виду
Const LEFTFROM={",":".":"\""}
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";} & LEFTFROM & {;";");";");1)})
 
1

1KIA

Гость
#10
lmike
спасибо
но вот я тут начала мучаться, чтобы s2 удалять ту часть, а Const LEFTFROM={",":".":"\""}
заменять на пробел
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#11
ничего не понял...
надо расширить пробелом - добавьте его в константу
Const LEFTFROM={",":".":"\"":" "}
 
1

1KIA

Гость
#12
не, я хочу, чтобы определенная часть s2 удалялась, а если во второй части письма есть например запятая, то она заменялась пробелом
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#13
ничего не понял про части...
кто там превая, по какому принципу...
для замена символов или их наборов - действуте по аналогии с выше-написанным
 
1

1KIA

Гость
#14
делаю так:
Код:
Do Until doc Is Nothing
Set doc1 = collection.GetNextDocument(doc) 
s2="*** "
s1=doc.GetItemValue("Subject")(0)
v1=Strright( s1, s2 )
Const LEFTFROM={",":".":"\""}
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & v1 & {";} & LEFTFROM & {;";");";");1)}) 
Call doc.ReplaceItemValue("Subject", v)
Call doc.Send(False,"поста")
Set doc = doc1
Loop 
Call collection.UpdateAll 
Call workspace.ViewRefresh
письмо вообще никуда не доходит!


убираю Call doc.ReplaceItemValue("Subject", v)
отправляется нормально, но с полной темой письма
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 486
365
#15
вопрос - а куда оно должно доходить? :)
поля from sendto не указано, и как параметр не передается "кому", может доку прочесть ;):
Call notesDocument.Send( attachForm [, recipients ] )
Parameters
attachForm
Boolean. If True, the form is stored and sent along with the document. If False, it isn't. Do not attach a form that uses computed subforms.
recipients
String or array of strings. Optional. The recipients of the document. See below.
Usage
The following rules apply to specification of the recipient or recipients:
Ignored if the document contains a SendTo item, in which case the document is mailed to recipients listed in SendTo.
Required if the document does not contain a SendTo item.
May include people, groups, or mail-in databases.
константа в цикле - это выглядит (архитектурно) некрасиво
не отправляется - значит некуда или по ошибке вываливается - отлаживать надо
 
1

1KIA

Гость
#16
Код:
	Const LEFTFROM={",":".":"\""}
Do Until doc Is Nothing
Set doc1 = collection.GetNextDocument(doc) 
s2="*** "
s1=doc.GetItemValue("Subject")(0)
v=Evaluate({@SubSet(@ReplaceSubstring("} & v1 & {";} & LEFTFROM & {;" ");1)}) 
Call doc.ReplaceItemValue( "Subject", v )

doc.SendTo = "эл.адрес" ' указываю адрес куда отправить
Call doc.Send( False )

' или так	'	Call doc.Send(False,"эл.адрес") ' 
Set doc = doc1
Loop 
Call collection.UpdateAll 
Call workspace.ViewRefresh
Не отправляются письма вообще :)
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#17
Не забывайте об отладчике и обработчиках ошибок, много пота и крови сэкономите. Какая-нибудь ошибка возвращается?
 
1

1KIA

Гость
#18
поменяла адрес на другой интернет адрес - заработало!
 

nvyush

Well-Known Member
Lotus team
22.04.2009
2 317
0
#19
Тему помещаем в s1, далее обрабатываем v1:
Код:
		s1=doc.GetItemValue("Subject")(0)
v=Evaluate({@SubSet(@ReplaceSubstring("} & v1 & {";} & LEFTFROM & {;" ");1)})
Так и должно быть?
 
1

1KIA

Гость
#20
Код:
		s1=doc.GetItemValue("Subject")(0)
v1=Strright( s1, s2 )
просто не нужный кусок удаляеися из письма