• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

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

1KIA

Есть кнопка, при нажатии на которую, письмо отправляется на эл. почту
кнопка
Код:
	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
7 933
609
BIT
178
ну наверное в форме, кот. тоже (зачем-то) отправлется, есть подпися...
д.б.
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

не подскажете, необходимо, чтобы не удалялось полностью из базы, а отправлялось в корзину. Если делаю:
Код:
  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
7 933
609
BIT
178
есть 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
18.06.2010
49
0
BIT
3
пишет после каждого документа, что он был удален
Вы сначала удаляете документ, а потом по нему получаете следующий.
Сделайте наоборот
Код:
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

надо чтобы отправлялись письма с урезанной темой письма
мне не надо первая часть письма
Код:
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
7 933
609
BIT
178
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";",":".":"\"";";");";");1)})
проверьте формулу (предварительно, я мог ошибиться с кол-вом скобок и прочая)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
можно привести к виду
Const LEFTFROM={",":".":"\""}
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";} & LEFTFROM & {;";");";");1)})
 
1

1KIA

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
ничего не понял...
надо расширить пробелом - добавьте его в константу
Const LEFTFROM={",":".":"\"":" "}
 
1

1KIA

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
ничего не понял про части...
кто там превая, по какому принципу...
для замена символов или их наборов - действуте по аналогии с выше-написанным
 
1

1KIA

делаю так:
Код:
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
7 933
609
BIT
178
вопрос - а куда оно должно доходить? :)
поля 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

Код:
	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
Не отправляются письма вообще :)
 
N

nvyush

Не забывайте об отладчике и обработчиках ошибок, много пота и крови сэкономите. Какая-нибудь ошибка возвращается?
 
1

1KIA

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

nvyush

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

1KIA

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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!