Что нового

[Сеть, интернет] Почтовые уведомления

Maxwal

Новичок
Сообщения
14
Репутация
0
Доброго времени суток.
Подскажите, возможно ли с помощью AutoIt и планировщика заданий отправлять почтовые сообщения с одного адреса на другой? Проблема заключается в том, что ПК находится в основном в заблокированном состоянии, видимо поэтому функция _INetMail работает "вхолостую", а у ф-ции _INetSmtpMail нет такого параметра как пароль. Теперь думамаю как решить эту задачу. Если у кого есть идеи подскажите направление.))
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
сторонние утилиты для отправки почты из командной строки?
BLAT for Windows
 
Автор
M

Maxwal

Новичок
Сообщения
14
Репутация
0
Блин.
Спасибо, даже AutoIt не придется использовать)))
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 166
Репутация
2 330
Kaster
Молодец, отбил одного юзера у сообщества AutoIt :laugh: :'( :IL_AutoIt_1:


Человек же спрашивал:
возможно ли с помощью AutoIt и планировщика заданий отправлять почтовые сообщения с одного адреса на другой
Maxwal [?]
у ф-ции _INetSmtpMail нет такого параметра как пароль
Это у стандартной, а есть такой вариант:

Код:
Func _INetSmtpMailCom($s_SmtpServer, $s_FromName, $s_FromAddress, $s_ToAddress, $s_Subject = "", $s_Body = "", $s_AttachFiles = "", $s_CcAddress = "", $s_BccAddress = "", $s_Username = "", $s_Password = "", $IPPort = 25, $ssl = 0)
	Local $objEmail = ObjCreate("CDO.Message")
	If Not IsObj($objEmail) Then Return SetError(1, 0, 0)
	
    $objEmail.From = '"' & $s_FromName & '" <' & $s_FromAddress & '>'
    $objEmail.To = $s_ToAddress
    
	Local $i_Error = 0
    Local $i_Error_desciption = ""
    
	If $s_CcAddress <> "" Then $objEmail.Cc = $s_CcAddress
    If $s_BccAddress <> "" Then $objEmail.Bcc = $s_BccAddress
    
	$objEmail.Subject = $s_Subject
   
	If StringInStr($s_Body, "<") And StringInStr($s_Body, ">") Then
        $objEmail.HTMLBody = $s_Body
    Else
        $objEmail.Textbody = $s_Body & @CRLF
    EndIf
    
	If $s_AttachFiles <> "" Then
        Local $S_Files2Attach = StringSplit($s_AttachFiles, ";")
        For $x = 1 To $S_Files2Attach[0]
            $S_Files2Attach[$x] = _PathFull($S_Files2Attach[$x])
            If FileExists($S_Files2Attach[$x]) Then
                $objEmail.AddAttachment($S_Files2Attach[$x])
            Else
                $i_Error_desciption = $i_Error_desciption & @LF & 'File not found to attach: ' & $S_Files2Attach[$x]
                Return SetError(1, 0, 0)
            EndIf
        Next
    EndIf
    
	$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
   
   If $s_Username <> "" Then
        $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
    EndIf
   
	If $ssl Then
        $objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    EndIf
   
	$objEmail.Configuration.Fields.Update
    $objEmail.Send
    
	If @error Then Return SetError(2, 0, $oMyRet[1])
EndFunc


Подробнее.
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
CreatoR [?]
Молодец, отбил одного юзера у сообщества AutoIt
да я вообще имел в виду использовать Blat из под AutoIt ;D
ну типо для автоматизации и прочего.
Maxwal, вернись, мы все простим :D
 

Foxik

Новичок
Сообщения
15
Репутация
0
Вот пример использования Blat из под AutoIt

Код:
$BlatArgs = "-t кому@письмо.ru -f откого@письмо.ru -s заголовок -server smtp.сервер.ru -u логин@учетки.ru -pw пароль -body письмо(текст) -attach c:\прикрепленный_фаил.exe"


_SendMail($BlatArgs)

Func _SendMail($CMDstring)
    $BlatDLL = DllOpen ("blat.dll")
    Do
        $result=DllCall($BlatDLL,"int","Send","str",$CMDstring)

        Select
            Case $result[0] = 13
                MsgBox(16,"Ошибка. Код ошибки " & $result[0], "Не могу открыть временный файл во временной папке")

            Case $result[0] = 12
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не указаны или не найдены в реестре аргументы -server или -f")

            Case $result[0] = 3
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу прочитать файл с текстом письма или приложенный файл")

            Case $result[0] = 2
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Почтовому серверу не понравился адрес отправителя; или он отказал нам в подключении; или неверный пароль; или не найден файл с текстом письма")
            Case $result[0] = 1
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу открыть SMTP сокет. Проверьте подключение к Интернету; либо неверные аргументы")
            Case $result[0] <> 0
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Неизвестная ошибка")
        EndSelect
    Until $result[0] = 0
    MsgBox(16, "нет ошибки.", "Письмо отправлено :-)" & @CRLF)
    DllClose ($BlatDLL)
EndFunc ;
 

ynbIpb

Скриптер
Сообщения
398
Репутация
109
я так понял при использовании blat.dll, blat.exe вообще не нужен?
Странно как-то работает Дллка, как консольное приложение.

-------- updated ----------
Сам проверил, работает дллка без EXE. но верхний пример не работал. Заработало так:
Код:
$SmtpServer = "smtp.mail.ru"            ; адрес SMTP сервера
$FromName = "Mail Sender"               ; имя отправителя
$FromAddress = "[email protected]" ; адрес отправителя
$ToAddress = "[email protected]"      ; адрес назначения
$Subject = "test_mail_8"              ; тема письма
$Body = "body_of_mail"            ; тело письма (сам текст письма)
$AttachFiles = "D:\autoit_scripts\email\settings.ini"; прикреплённые файлы к письму
$Username = "zzzzzmail"            ; имя пользователя аккаунта, с которого отправляется
$Password = "12345z"                     ; пароль аккаунта, с которого отправляется

$BlatArgs = "-t "&$ToAddress&" -f "&$FromAddress&" -s "&$Subject&" -body "&$Body&" -server "&$SmtpServer&" -u "&$Username&" -pw "&$Password&" -attach "&$AttachFiles
;Run (@scriptdir & "\blat.exe " & $BlatArgs, @ScriptDir, @SW_HIDE )
_SendMail($BlatArgs)

Func _SendMail($CMDstring)
    $BlatDLL = DllOpen ("blat.dll")
    Do
        $result=DllCall($BlatDLL,"int","Send","str",$CMDstring)

        Select
            Case $result[0] = 13
                MsgBox(16,"Ошибка. Код ошибки " & $result[0], "Не могу открыть временный файл во временной папке")

            Case $result[0] = 12
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не указаны или не найдены в реестре аргументы -server или -f")

            Case $result[0] = 3
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу прочитать файл с текстом письма или приложенный файл")

            Case $result[0] = 2
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Почтовому серверу не понравился адрес отправителя; или он отказал нам в подключении; или неверный пароль; или не найден файл с текстом письма")
            Case $result[0] = 1
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Не могу открыть SMTP сокет. Проверьте подключение к Интернету; либо неверные аргументы")
            Case $result[0] <> 0
                MsgBox(16, "Ошибка. Код ошибки " & $result[0], "Неизвестная ошибка")
        EndSelect
    Until $result[0] = 0
    MsgBox(16, "нет ошибки.", "Письмо отправлено :-)" & @CRLF)
    DllClose ($BlatDLL)
EndFunc ;
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
А есть где описание примеров получения почты?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Vlasssov
это средство для отправки почты. принимать не умеет
 

Vlasssov

Осваивающий
Сообщения
428
Репутация
25
Kaster сказал(а):
Vlasssov
это средство для отправки почты. принимать не умеет
Ну не отдельную же тему заводить.. Там на странице есть ссылка
http://pages.interlog.com/~tcharron/getmail.html
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Vlasssov [?]
Ну не отдельную же тему заводить.
почему же, вполне себе заводить. это разные протоколы и нет ничего предосудительного в том, чтобы классово отличить их друг от друга и завести разные темы. но к всеобщему счастью, такая тема уже есть
http://autoit-script.ru/index.php?topic=610.0
 
Верх