Тема: AHK: Отправить email при событии
Подскажите, пожалуйста, существует ли возможность отправить email при совершении определенного события посредством AHK? Если да, то как это можно реализовать? Спасибо!
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Подскажите, пожалуйста, существует ли возможность отправить email при совершении определенного события посредством AHK? Если да, то как это можно реализовать? Спасибо!
Flasher, спасибо! Искал по слову "email", не нашел.
Форумный поиск ищет плохо.
Пользуйтесь гугловским.
Malcev
Нормально он ищет. И главное - удобней.
Ну и что он вам выдаст по слову "email"?
Зачем мне email, когда есть почт*, письм* ?
Вообще-то email - это искажённое e-mail. А уже по e-mail форумный поиск находит.
Если в названии темы или сообщении присутствует слово "email", то поиск должен их выдавать.
А преимущество гугла в том, что он сам за тебя додумывает, что ты ищешь.
Ага. И выдаст кучу ненужных мне тем из других разделов.
По email эта тема и находится.
Чтобы не выдало с других разделов в гугле нужно искать "email ahk".
У ahk 3 раздела, а я ищу в конкретном.
Ну если в конкретном, то да - форумным движком удобнее.
Я обычно во всех ищу, так-как в любом из подфорумов может быть полезная информация.
Вообще-то email - это искажённое e-mail.
У меня другая информация:
Electronic mail has been most commonly called email or e-mail since around 1993,[5] but various variations of the spelling have been used:
email is the most common form used online, and is required by IETF Requests for Comments (RFC) and working groups[6] and increasingly by style guides.[7][8] This spelling also appears in most dictionaries.[9][10][11][12][13][14][15]
e-mail has long been the form that appears most frequently in edited, published American English and British English writing as reflected in the Corpus of Contemporary American English data,[16] but is falling out of favor in style guides.[8][17]
OFF:
Ладно, строгого правила нет. Просто в наших краях оно в большей степени известно и укореннилось как "e-mail".
Что пишет ru.wikipedia.org.
Наиболее часто в кириллических текстах также используется «e-mail», то есть написание латиницей без транслитерации (визуальное восприятие других форм написания хуже). Но можно встретить и другие написания
Де-факто в официальных русскоязычных документах:
в тексте (в смысле «способ связи») употребляют выражение «электронная почта»;
в списке контактов используют префикс «e-mail» (E-mail: user@domain.com).
Text = "%A_ScriptDir%\Testas.txt" ; Путь к файлу с телом письма
;~ Body = This is a message sent with blat.dll ; Либо тело письма здесь
eMail=delivery@address.com ; Адрес получателя
subj=-s "Test Blat application"
user=mymail@yandex.ru ; Логин. Для Яндекса - также и адрес отравителя в одном флаконе :)
pass=-pw somepassword ; Пароль
server=-server smtp.yandex.ru:587 ; Сервер:порт
x=-x "X-Header-Test: Can Blat do it? Yes it Can!"
debug=-debug -log blat.log -timestamp ; Параметры лог-файла
Blat_String = %Text% -to %eMail% -f %user% -u %user% %pass% %subj% %server% %debug% %x%
RunWait, blat.exe %Blat_String%, , Hide UseErrorLevel ;
Tooltip, %A_LastError% ; Проверяем на отсутствие ошибок
Sleep, 5000
ExitApp
Скажите, это рабочий вариант? У меня не сработал, хотя логин и пароль от Яндекса ввел верно. Конечно, хотелось бы отправлять с GMail, если конкретнее, то самому себе. Может, я неправильно установил Blat.exe, т.к. с официального сайта я загрузил лишь архив с файлом Blat.exe. В сценарии также пробовал заменить Blat.exe на D:\Desktop\full\Blat.exe, т.е. указав путь расположения скачанного файла.
Отправляйте через CDO.
http://forum.script-coding.com/viewtopi … 021#p86021
becauseim
Собственно, когда приводил ссылки, думал, что мысль таки до CDO дойдёт. И вообще blat большеват для таких вещей. Если уж брать консоль, то что-то поминиатюрней хотя бы.
Malcev, можно ли добавить сервер Google для отправления? И, насколько понимаю, необходимо устанавливать в систему дополнительную библиотеку, где ее взять и как правильно использовать? Я переходил в оригинальную тему на английском языке, там приведенные ссылки были мертвы.
Может, я неправильно установил Blat.exe
Blat не поддерживает протоколы SSL/TLS почтовых серверов.
Как советовали выше - отправляйте через CDO. Для gmail почты:
pmsg := ComObjCreate("CDO.Message")
pmsg.From := """AHKUser"" <username@gmail.com>"
pmsg.To := "username@gmail.com"
pmsg.BCC := "" ; Blind Carbon Copy, Invisable for all, same syntax as CC
;pmsg.CC := "username@gmail.com, Other-username@gmail.com"
;pmsg.CC := "Somebody@somewhere.com, Other-somebody@somewhere.com"
pmsg.Subject := "Message_Subject"
;You can use either Text or HTML body like
pmsg.TextBody := "Message_Body"
;OR
;pmsg.HtmlBody := "<html><head><title>Hello</title></head><body><h2>Hello</h2><p>Testing!</p></body></html>"
sAttach := "C:\test.txt" ; 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 := "username@gmail.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)
pmsg.Send()
rowe, выходит ошибка. Сообщение не приходит.
Ветка форума. Проверил у себя на двух компьютерах, отправляет без ошибок.
rowe, только что скопировал заполненные данные в скрипте в браузер и вошел в учетную запись Google. Это полный код или его часть?
Перед запуском скопированного сценария из 19-го поста редактирую строки: 2, 3, 23, 24.
Да, все верно. Если нет вложений закомментируйте sAttach. Код полный.
rowe, закомментировал, не помогло. Может, не та версия AHK?
А в гугле двухэтапная аутентификация?
Если да, то надо тут разрешить:
https://www.google.com/settings/security/lesssecureapps
Malcev, спасибо! Теперь работает.
Не пойму только, как привязать такой скрипт к событию. Например, при закрытии заданного окна. И можно ли преобразовать сценарий в функцию, чтобы задавать адресатов и тело сообщения для каждого события? Например, при закрытии одного окна отправлять одно сообщение, а при закрытии другого - другое сообщение. Т.е. как-то так:
WinWait, Notepad
WinWaitClose, Notepad
SendMail(mail_1@gmail.com, mail_2@gmail.com, Привет!) ; отправить на две разные почты сообщение "Привет!"
return
Исправьте, пожалуйста.
SendMail(To, Subject, Body)
{
pmsg := ComObjCreate("CDO.Message")
pmsg.From := """I Am"" <adress@gmail.com>"
pmsg.To := "%To%"
pmsg.BCC := "" ; Blind Carbon Copy, Invisable for all, same syntax as CC
;pmsg.CC := "username@gmail.com, Other-username@gmail.com"
;pmsg.CC := "Somebody@somewhere.com, Other-somebody@somewhere.com"
pmsg.Subject := "%Subject%"
;You can use either Text or HTML body like
pmsg.TextBody := "%Body%"
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 := "adress@gmail.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)
pmsg.Send()
}
f1::
SendMail(adress@gmail.com, Report, Render Complete!)
return
У вас неправильные параметры в функции:
Поскольку вызов функции является выражением, не следует заключать в знаки процента имена переменных в списке ее параметров. И напротив, буквальные строки необходимо заключать в двойные кавычки
И переменные:
var := "test"
msgbox % Subject := "%var%"
msgbox % Subject := var
Malcev, пробовал убирать знаки процентов, убирать кавычки, ставить двойные кавычки вместо одинарных - ничего не вышло. Также скрипт ругается на pmsg.Send().
a := "adress@gmail.com"
SendMail(a)
SendMail("adress@gmail.com")
SendMail(adress@gmail.com)
SendMail(To)
{
msgbox % to
}
Malcev, получилось. Спасибо!
Не удается прикрепить файл без расширения:
sAttach := "C:\Users\" A_UserName "\AppData\file" sendpng
Без переменной в пути файл прикрепляется:
sAttach := "D:\file" sendpng
Подскажите, где ошибка?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться