Здравствуйте, в своей организации мы используем ПО Lotus Notes. Думаю и в других организация это ПО не редко используется. Удивительно, что на нашем форуме по этому вопросу так мало информации, а то что есть работает через GUI. На англоязычных ресурсах эта тема более активно обсуждалось и даже имеются некоторые реализации, при чем реализация идет через ComObject. К сожалению посредственные знания английского(как и языков программирования) очень затрудняют попытки состряпать скрипт. Задача на самом деле такая, хотелось бы получить возможность раз в минут 15 проверять свою почту в папке inbox(Входящие) и если скрипт видит, что пришли новые сообщения(с последней проверки) пробежаться по ним и спрасить(если так можно выразиться) все что можно посредствам другого скрипта на ящик gmail к примеру. Можно настроить скрипт на ожидание окошка Уведомления о новом сообщение в LN. У меня имеется скрипт , который может отправлять(по gmail, не lotus) сообщения на почту с вложениями. Вот он
Хотелось бы сделать так сказать переадресацию на коленке, те с сриптовыми костылями. В организации все настроено так(Domino Server), что во внешку переадресацию не настроить, в рамках DS экосистемы.
На англоязычном форуме нашел два интересных скрипта:
1. Данный скрипт выводит информацию по первому письму , те по самому старому в папке Входящие.( и выдает только вот "subject" и "PostedDate" первого письма) если добавить строку
- то можно получить текстовое содержимое письма. Но это все на, что меня хватило. Круто было бы данный скрипт переделать для начала так, чтобы иметь возможность получать информацию о последнем входящем сообщении. Ну а там уже можно подумать о массиве писем.
2. еще интересный скрипт
Вот ссылка на книженцию redbooks.ibm.com/redbooks/pdfs/sg245670.pdf по COM манипуляциям с LN
Код:
#Region переменные
$sSmtpServer = "smtp.gmail.com"
$sFromName = "blablabla"
$sFromAddress = "[email protected]"
$sUsername = "bla"
$sPassword = "Password"
$sSubject = "Тема"
$sBody = "Текст письма"
$sToAddress = "[email protected]"
$iIPPort = 465
$iSsl = 1
Dim $aAttach[0] ; Массив прикрепляемых файлов
Global $oMyRet[2]
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
#EndRegion
$rc = _INetSmtpMailCom($sSmtpServer, $sFromName, $sFromAddress, $sToAddress, $sSubject, $sBody, $aAttach, Default, $sUsername, $sPassword, $iIPPort, $iSsl)
If @error Then
MsgBox(0, "Error sending message", "Error code:" & @error & " Description:" & $rc)
EndIf
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $as_Body = "", $a_Attach = "", $s_Importance="Normal", $s_Username = "", $s_Password = "", $IPPort = 465, $ssl = True)
Local $objEmail = ObjCreate("CDO.Message"), $i_Error = 0, $i_Error_desciption = ""
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/languagecode") = 1049
$objEmail.BodyPart.CharSet = "utf-8"
$objEmail.BodyPart.ContentTransferEncoding = "quoted-printable"
$objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
$objEmail.To = $s_ToAddress
$objEmail.Subject = $s_Subject
; Можно отправлять в формате HTML
;$objEmail.HTMLBody = $as_Body
$objEmail.TextBody = $as_Body
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/usemessageresponsetext") = True
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = $s_SmtpServer
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = $IPPort
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") = $s_Username
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") = $s_Password
If UBound($a_Attach) > 0 Then
For $j = 0 To UBound($a_Attach)-1
If FileExists($a_Attach[$j]) Then
$objEmail.AddAttachment ($aAttach[$j])
Else
Exit MsgBox(4096, "", "Файл " & $a_Attach[$j] & " не найден")
EndIf
Next
EndIf
If $ssl Then
$objEmail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
EndIf
$objEmail.Configuration.Fields.Update
$objEmail.Fields.Update
$objEmail.Send
If @error Then
SetError(2)
Return $oMyRet[1]
EndIf
$objEmail=""
EndFunc ;==>_INetSmtpMailCom
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description, 3)
ConsoleWrite("### COM Error ! Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF)
SetError(1); something to check for when this function returns
Return
EndFunc ;==>MyErrFunc
Хотелось бы сделать так сказать переадресацию на коленке, те с сриптовыми костылями. В организации все настроено так(Domino Server), что во внешку переадресацию не настроить, в рамках DS экосистемы.
На англоязычном форуме нашел два интересных скрипта:
1. Данный скрипт выводит информацию по первому письму , те по самому старому в папке Входящие.( и выдает только вот "subject" и "PostedDate" первого письма) если добавить строку
Код:
$Body = $ntDocument.GETFIRSTITEM ("Body")
Код:
;Initialize Lotus Notes
$Session = ObjCreate("Notes.NotesSession")
$Maildb = $Session.GetDatabase ("", "")
If Not $Maildb.IsOpen Then
$Maildb.OPENMAIL
EndIf
;Look for the first mail in the Lotus Notes "Inbox"
$ntView = $Maildb.GETVIEW ("($Inbox)")
$ntNavigator = $ntView.CREATEVIEWNAV ()
$ntViewEntry = $ntNavigator.GETFIRSTDOCUMENT ()
$ntDocument = $ntViewEntry.Document
;Give the mail subject
$Subject = $ntDocument.GETFIRSTITEM ("subject")
ConsoleWrite("Sujet Mail : " & $Subject.Text & ", ")
;Give the mail date & time
$PostedDate = $ntDocument.GETFIRSTITEM ("PostedDate")
ConsoleWrite("Date: " & $PostedDate.Text & ", ")
;Check if an attached is available
If $ntDocument.HasEmbedded Then
ConsoleWrite("Attached found" & @CrLf)
;**********HERE IT'S BLOCKING - I can't get the attached
$vaAttachment = $ntDocument.GetAttachment()
$vaAttachment.extractfile("c:\" & $vaAttachment.name)
Else
ConsoleWrite("Attached not found" & @CrLf)
endif
2. еще интересный скрипт
Код:
#include <date.au3>
Global $recipient, $Subject, $bodytext, $attachment, $saveit
$recipient = "[email protected]"
$Subject = "test"
$bodytext = "more test"
;$attachment = "C:Documents and Settingsyour.nameMy Documentsscriptsemail test.au3"
$saveit = True
SendNotesMail($recipient, $Subject, $bodytext, $attachment, $saveit)
Func SendNotesMail($recipient, $Subject, $bodytext, $attachment, $saveit)
;Start a $Session to notes
$Session = ObjCreate("Notes.NotesSession")
;Get the sessions $UserName and then calculate the mail file name
$UserName = $Session.UserName
$MailDbName = StringLeft($UserName, 1) & StringRight($UserName, (StringLen($UserName) - StringInStr(1, $UserName, " "))) & ".nsf"
;Open the mail database in notes
$Maildb = $Session.GETDATABASE("", $MailDbName)
If $Maildb.IsOpen = 1 Then
;Already open for mail
Else
$Maildb.OPENMAIL()
EndIf
;Set up the new mail document
$MailDoc = $Maildb.CREATEDOCUMENT
$MailDoc.Form = "Memo"
$MailDoc.sendto = $recipient
$MailDoc.Subject = $Subject
$MailDoc.Body = $bodytext
$MailDoc.SAVEMESSAGEONSEND = $saveit
;Set up the embedded $Object and $attachment and attach it
If $attachment <> "" Then
If FileExists(@ScriptDir & "" & $attachment) Then
$filename = $attachment
$fullpath = @ScriptDir & "" & $attachment
ElseIf FileExists($attachment) Then
$pos = StringInStr($attachment, "", 0, -1)
$filename = StringTrimLeft($attachment, $pos)
$fullpath = $attachment
Else
MsgBox(0, "LoNo Error", "attachment not found")
Exit
EndIf
$AttachME = $MailDoc.CREATERICHTEXTITEM($filename)
$EmbedObj = $AttachME.EMBEDOBJECT(1454, "", $fullpath, $filename)
;$MailDoc.CREATERICHTEXTITEM($filename)
EndIf
;Send the document
$MailDoc.PostedDate = _Now();Gets the mail to appear in the sent items folder
$MailDoc.SEND(0, $recipient)
$Maildb = "NULL"
$MailDoc = "NULL"
$AttachME = "NULL"
$Session = "NULL"
$EmbedObj = "NULL"
EndFunc ;==>SendNotesMail
Вот ссылка на книженцию redbooks.ibm.com/redbooks/pdfs/sg245670.pdf по COM манипуляциям с LN