Нашел код. Он должен отсылать файл на email сразу ,как тот попадает в папку. Это нужно для передачи документов из сети организации на мыло.
Почему-то не работает. Помогите разобраться, что там куда записывать?
При поступлении файла в папку внешняя программа должна преобразовать эту информацию в электронное письмо и отослать его адресату. Конечно, должен быть зарегистрирован почтовый адрес, с которого будут уходить письма. Вполне подойдет почтовый адрес на любом публичном почтовом сервисе - mail.ru, gmail.com и так далее. Вот иллюстрация одного из способов отправки сообщения. Используется стандартный механизм CDO от Майкрософт. На языке autoit получается чистый элегантный код, поэтому приведу его.
Почему-то не работает. Помогите разобраться, что там куда записывать?
При поступлении файла в папку внешняя программа должна преобразовать эту информацию в электронное письмо и отослать его адресату. Конечно, должен быть зарегистрирован почтовый адрес, с которого будут уходить письма. Вполне подойдет почтовый адрес на любом публичном почтовом сервисе - mail.ru, gmail.com и так далее. Вот иллюстрация одного из способов отправки сообщения. Используется стандартный механизм CDO от Майкрософт. На языке autoit получается чистый элегантный код, поэтому приведу его.
Код:
Func Send_Email(data)
#cs
data - массив стандарной для autoit структуры. Элемент 0 - длина массива, начиная с первого - элементы массива
Порядок элементов:
1 From
2 To
3 Subject
4 Smtp
5 Username
6 Password
7 Port
8 ТекстСообщения
#ce
$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
If Not IsObj($hMAIL) Then
MsgBox(8208, "имя программы", "Не найден объект CDO. Отправка почты невозможна", 10)
Else
With $hMAIL
.Bodypart.Charset = "windows-1251" ; Кодировка
.From = $data[1]
.To = $data[2]
.Subject = $data[3]
.TextBody = $data[8] & @CRLF
;~ .AddAttachment ("C:\dir\file.ext") ;файл для отправки
EndWith
With $hMAIL.Configuration.Fields
.Item ($str & "languagecode") = 1049
.Item ($str & "sendusing") = 2
.Item ($str & "smtpserver") = $data[4] ; SMTP Server
.Item ($str & "smtpauthenticate") = 1
.Item ($str & "sendusername") = $data[5] ; username
.Item ($str & "sendpassword") = $data[6] ; Пароль SMTP-сервера
.Item ($str & "smtpserverport") = $data[7] ; Порт
.Item ($str & "smtpconnectiontimeout") = 30
.Update
EndWith
$hMAIL.Send
EndIf
EndFunc
Все хорошо, письма уходят, проблемы возникают при ошибках отправки (недоступен почтовый сервер и так далее). Необходимо эти ошибки перехватить и обработать. Ставим обработчик:
Global $oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")
Global $oMyRet[2]
Func MyErrFunc()
$HexNumber = Hex($oMyError.number, 8)
$oMyRet[0] = $HexNumber
$oMyRet[1] = StringStripWS($oMyError.description, 3)
MsgBox(4096,"имя программы","Error Number: " & $HexNumber & " ScriptLine: " & $oMyError.scriptline & " Description:" & $oMyRet[1] & @LF,15)
SetError(1) ; something to check for when this function returns
Return
EndFunc