1

Тема: AHK: Отправка логов

Здравствуйте, как можно сделать, чтоб программа отправляла из EditBox сообщение на почту.

2

Re: AHK: Отправка логов

По-моему не умеет AutoHotkey напрямую работать с почтой. Ищите какие-нибудь программы-посредники, поддерживающие автоматизацию. На форуме https://autohotkey.com много чего есть, наверное там уже поднимался такой вопрос.

3

Re: AHK: Отправка логов

AHK умет работать с COM-объектами, например, с CDO.Message.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

4

Re: AHK: Отправка логов

teadrinker, спасибо за ориентир, буду искать документацию касательно данных функций.

5

Re: AHK: Отправка логов

ypppu пишет:

По-моему не умеет AutoHotkey напрямую работать с почтой.

Если чуток подзапариться, то умеет.
http://forum.script-coding.com/viewtopic.php?id=16339

6 (изменено: andrey.a.polyakov.b2c, 2021-12-25 17:23:25)

Re: AHK: Отправка логов

yakmuve, проще написать скрипт на php и уже к нему обращаясь отправлять почту, например:


<?php
$to = $_GET['mail'];
$headers = array(
    'From' => 'Мой_Софт<soft@my.ru>',
    'X-Mailer' => 'PHP/' . phpversion()
);
$subject = $_GET['t'];
$message = $_GET['m'];

mail($to,$subject,$message,$headers);
?>

Ну и в Ahk отправляем запрос например на F2:


global WinHttpRequestOption_EnableRedirects := 6
global WinHttpRequestOption_MaxAutomaticRedirects := 14
global WinHttpRequestOption_EnableHttpsToHttpRedirects := 12
global oHttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")
oHttpRequest.Option(WinHttpRequestOption_EnableRedirects) := -1
oHttpRequest.Option(WinHttpRequestOption_EnableHttpsToHttpRedirects) := -1
oHttpRequest.Option(WinHttpRequestOption_MaxAutomaticRedirects) := 20
global HttpObj := ComObjCreate("WinHttp.WinHttpRequest.5.1")
global oHttpRequest := ComObjCreate("WinHttp.WinHttpRequest.5.1")

F2::
    SendMail("Тестовая тема","Тестовое сообщение","mmm@yandex.ru")
Return

SendMail(subject,message,mail ) {
    try
    {
        oHtmlDoc := documentFromURL("http://сайт/mail.php?t=" . subject . "&m=" . message . "&mail=" . mail)
        return,"Письмо отправлено"
    }
    catch e {
        return,"Ошибка сервера " . e.message
    }
}

GetHTML(ByRef sHTMLCode, ByRef sBaseURL) {
    oDoc := ComObjCreate("htmlfile")
    oDoc.open()
    oDoc.write("<base href=""" . sBaseURL . """>")
    oDoc.close()
    oDoc.body.innerHTML := sHTMLCode
return oDoc
}
documentFromURL(ByRef sURL) {
    oHttpRequest.open("GET", sURL, false)
    oHttpRequest.SetRequestHeader("User-Agent", "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)")
    oHttpRequest.SetRequestHeader("Referer", sURL)
    oHttpRequest.SetRequestHeader("Content-Type", "text/html")
    oHttpRequest.send()
return GetHTML(oHttpRequest.responseText, sURL)
}

7

Re: AHK: Отправка логов

andrey.a.polyakov.b2c, правильно я понимаю, что решение предполагает наличие своего сайта либо локального сервера?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

8

Re: AHK: Отправка логов

teadrinker, да все верно. Можно любой хостинг с php.

9 (изменено: EV, 2022-01-03 03:45:46)

Re: AHK: Отправка логов

yakmuve пишет:

Здравствуйте, как можно сделать, чтоб программа отправляла из EditBox сообщение на почту.

pmsg 			:= ComObjCreate("CDO.Message")
pmsg.From 		:= """AHKUser"" <ahk.com>"
pmsg.To 		:= "ahk.com"
pmsg.BCC 		:= ""   ; Blind Carbon Copy, Invisable for all, same syntax as CC
;pmsg.CC 		:= "ahk, Other-ahk"
;pmsg.CC 		:= "Somebody@somewhere.com, Other-somebody@somewhere.com"
pmsg.Subject 	:= "Name."

;You can use either Text or HTML body like
pmsg.TextBody 	:= "Name"
;OR
;pmsg.HtmlBody := "<html><head><title>Hello</title></head><body><h2>Hello</h2><p>Testing!</p></body></html>"
fields.sendusername := "lolin@gmail.com"
fields.sendpassword := "passwod"



sAttach   		:= "C:\Users\Home\Desktop\test.jpg" ; can add multiple attachments, the delimiter is |

fields := Object()
fields.smtpserver   := "smtp.gmail.com" ; specify your SMTP server
fields.smtpserverport     := 465 ; 25
fields.smtpusessl      := True ; False
fields.sendusing     := 2   ; cdoSendUsingPort
fields.smtpauthenticate     := 1   ; cdoBasic
fields.sendusername := "Somebody@somewhere.com"
fields.sendpassword := "password"
fields.smtpconnectiontimeout := 60
schema := "http://schemas.microsoft.com/cdo/configuration/"
pfld :=   pmsg.Configuration.Fields

For field,value in fields
	pfld.Item(schema . field) := value
pfld.Update()

Loop, Parse, sAttach, |, %A_Space%%A_Tab%
  pmsg.AddAttachment(A_LoopField)

В настрайках аккаунта нужно разрешить доступ для ненадежных приложений. https://myaccount.google.com/lesssecureapps.  Эта опция недоступна в аккаунтах с двухэтапной аутентификацией. Для gmail.com.

pmsg.HtmlBodyPart.Charset := "utf-8"

Если в сообщении кириллица не правильно отображается.