Что нового

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

Maxwal

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

kaster

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

Maxwal

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

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,665
Репутация
2,463
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

Скриптер
Сообщения
399
Репутация
110
я так понял при использовании 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

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

kaster

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

Vlasssov

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

kaster

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