• 🔥 Бесплатный курс от Академии Кодебай: «Анализ защищенности веб-приложений»

    🛡 Научитесь находить и использовать уязвимости веб-приложений.
    🧠 Изучите SQLi, XSS, CSRF, IDOR и другие типовые атаки на практике.
    🧪 Погрузитесь в реальные лаборатории и взломайте свой первый сайт!
    🚀 Подходит новичкам — никаких сложных предварительных знаний не требуется.

    Доступ открыт прямо сейчас Записаться бесплатно

Проблема с пересылкой 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
но хотелось бы знать, можно ли как-то избежать этих сообщений возможно в самом коде?
 
ну наверное в форме, кот. тоже (зачем-то) отправлется, есть подпися...
д.б.
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
т.е. ссылку нашли, а прочитать забыли? :)
 
не подскажете, необходимо, чтобы не удалялось полностью из базы, а отправлялось в корзину. Если делаю:
Код:
  Do Until doc Is Nothing 
Call doc.Send() 
Call doc.Remove(True)
Set doc = collection.GetNextDocument(doc)
Loop 
Call collection.UpdateAll 
Call workspace.ViewRefresh
пишет после каждого документа, что он был удален
 
есть 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.
 
пишет после каждого документа, что он был удален
Вы сначала удаляете документ, а потом по нему получаете следующий.
Сделайте наоборот
Код:
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
 
надо чтобы отправлялись письма с урезанной темой письма
мне не надо первая часть письма
Код:
s2="*** "
s1=doc.GetItemValue("Subject")(0)
v1 = Strright( s1, s2 )
Call doc.ReplaceItemValue("Subject", v1)
но есть проблема, что в оставшейся части письма могут быть "," ; "." ; " "" " и другие знаки
При наличии каких-либо из перечисленных знаков, письма не отправляются по необходимому адресу
Помогите, пожалуйста
если правильно понимаю, то надо
Код:
Strleft(Strright(s1, s2), ",")
но как вместо одной ", " указать несколько знаков?
 
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";",":".":"\"";";");";");1)})
проверьте формулу (предварительно, я мог ошибиться с кол-вом скобок и прочая)
 
можно привести к виду
Const LEFTFROM={",":".":"\""}
v=Evaluate({@SubSet(@Explode(@ReplaceSubstring("} & s1 & {";} & LEFTFROM & {;";");";");1)})
 
lmike
спасибо
но вот я тут начала мучаться, чтобы s2 удалять ту часть, а Const LEFTFROM={",":".":"\""}
заменять на пробел
 
ничего не понял...
надо расширить пробелом - добавьте его в константу
Const LEFTFROM={",":".":"\"":" "}
 
не, я хочу, чтобы определенная часть s2 удалялась, а если во второй части письма есть например запятая, то она заменялась пробелом
 
ничего не понял про части...
кто там превая, по какому принципу...
для замена символов или их наборов - действуте по аналогии с выше-написанным
 
делаю так:
Код:
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)
отправляется нормально, но с полной темой письма
 
вопрос - а куда оно должно доходить? :)
поля 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.
константа в цикле - это выглядит (архитектурно) некрасиво
не отправляется - значит некуда или по ошибке вываливается - отлаживать надо
 
Код:
	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
Не отправляются письма вообще :)
 
Не забывайте об отладчике и обработчиках ошибок, много пота и крови сэкономите. Какая-нибудь ошибка возвращается?
 
поменяла адрес на другой интернет адрес - заработало!
 
Тему помещаем в s1, далее обрабатываем v1:
Код:
		s1=doc.GetItemValue("Subject")(0)
v=Evaluate({@SubSet(@ReplaceSubstring("} & v1 & {";} & LEFTFROM & {;" ");1)})
Так и должно быть?
 
Код:
		s1=doc.GetItemValue("Subject")(0)
v1=Strright( s1, s2 )
просто не нужный кусок удаляеися из письма
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab