1

Тема: AHK: Отправить email при событии

Подскажите, пожалуйста, существует ли возможность отправить email при совершении определенного события посредством AHK? Если да, то как это можно реализовать? Спасибо!

2

Re: AHK: Отправить email при событии

becauseim
Поиск никак отломался (1, 2 и т.д.)?

P.S.: Всё жду...

3

Re: AHK: Отправить email при событии

Flasher, спасибо! Искал по слову "email", не нашел.

4

Re: AHK: Отправить email при событии

Форумный поиск ищет плохо.
Пользуйтесь гугловским.

5

Re: AHK: Отправить email при событии

Malcev
Нормально он ищет. И главное - удобней.

6

Re: AHK: Отправить email при событии

Ну и что он вам выдаст по слову "email"?

7

Re: AHK: Отправить email при событии

Зачем мне email, когда есть почт*, письм* ?

8

Re: AHK: Отправить email при событии

Вообще-то email - это искажённое e-mail. А уже по e-mail форумный поиск находит.

9

Re: AHK: Отправить email при событии

Если в названии темы или сообщении присутствует слово "email", то поиск должен их выдавать.
А преимущество гугла в том, что он сам за тебя додумывает, что ты ищешь.

10

Re: AHK: Отправить email при событии

Ага. И выдаст кучу ненужных мне тем из других разделов.
По email эта тема и находится.

11 (изменено: Malcev, 2016-12-05 21:46:20)

Re: AHK: Отправить email при событии

Чтобы не выдало с других разделов в гугле нужно искать "email ahk".

12

Re: AHK: Отправить email при событии

У ahk 3 раздела, а я ищу в конкретном.

13

Re: AHK: Отправить email при событии

Ну если в конкретном, то да - форумным движком удобнее.
Я обычно во всех ищу, так-как в любом из подфорумов может быть полезная информация.

Вообще-то 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]

https://en.wikipedia.org/wiki/Email

14

Re: AHK: Отправить email при событии

OFF:
Ладно, строгого правила нет. Просто в наших краях оно в большей степени известно и укореннилось как "e-mail".

Что пишет ru.wikipedia.org.

Наиболее часто в кириллических текстах также используется «e-mail», то есть написание латиницей без транслитерации (визуальное восприятие других форм написания хуже). Но можно встретить и другие написания

Де-факто в официальных русскоязычных документах:
    в тексте (в смысле «способ связи») употребляют выражение «электронная почта»;
    в списке контактов используют префикс «e-mail» (E-mail: user@domain.com).

15

Re: AHK: Отправить email при событии

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, т.е. указав путь расположения скачанного файла.

16

Re: AHK: Отправить email при событии

Отправляйте через CDO.
http://forum.script-coding.com/viewtopi … 021#p86021

17

Re: AHK: Отправить email при событии

becauseim
Собственно, когда приводил ссылки, думал, что мысль таки до CDO дойдёт. И вообще blat большеват для таких вещей. Если уж брать консоль, то что-то поминиатюрней хотя бы.

18 (изменено: becauseim, 2016-12-06 11:30:42)

Re: AHK: Отправить email при событии

Malcev, можно ли добавить сервер Google для отправления? И, насколько понимаю, необходимо устанавливать в систему дополнительную библиотеку, где ее взять и как правильно использовать? Я переходил в оригинальную тему на английском языке, там приведенные ссылки были мертвы.

19

Re: AHK: Отправить email при событии

becauseim пишет:

Может, я неправильно установил 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()

20

Re: AHK: Отправить email при событии

rowe, выходит ошибка. Сообщение не приходит.
http://puu.sh/sGgM9/ba92671d8d.png

21 (изменено: rowe, 2016-12-06 23:04:31)

Re: AHK: Отправить email при событии

Ветка форума. Проверил у себя на двух компьютерах,  отправляет без ошибок.

22

Re: AHK: Отправить email при событии

rowe, только что скопировал заполненные данные в скрипте в браузер и вошел в учетную запись Google. Это полный код или его часть?

23

Re: AHK: Отправить email при событии

Перед запуском скопированного сценария из 19-го поста редактирую строки: 2, 3, 23, 24.

24 (изменено: rowe, 2016-12-06 23:10:36)

Re: AHK: Отправить email при событии

Да, все верно. Если нет вложений  закомментируйте sAttach. Код полный.

25

Re: AHK: Отправить email при событии

rowe, закомментировал, не помогло. Может, не та версия AHK?

26 (изменено: Malcev, 2016-12-07 08:36:36)

Re: AHK: Отправить email при событии

А в гугле двухэтапная аутентификация?
Если да, то надо тут разрешить:
https://www.google.com/settings/security/lesssecureapps

27

Re: AHK: Отправить email при событии

Malcev, спасибо! Теперь работает.

28

Re: AHK: Отправить email при событии

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


WinWait, Notepad
WinWaitClose, Notepad
SendMail(mail_1@gmail.com, mail_2@gmail.com, Привет!) ; отправить на две разные почты сообщение "Привет!"
return

29

Re: AHK: Отправить email при событии

Исправьте, пожалуйста.

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

30

Re: AHK: Отправить email при событии

У вас неправильные параметры в функции:

Поскольку вызов функции является выражением, не следует заключать в знаки процента имена переменных в списке ее параметров. И напротив, буквальные строки необходимо заключать в двойные кавычки

И переменные:

var := "test"
msgbox % Subject := "%var%"
msgbox % Subject := var

31

Re: AHK: Отправить email при событии

Malcev, пробовал убирать знаки процентов, убирать кавычки, ставить двойные кавычки вместо одинарных - ничего не вышло. Также скрипт ругается на pmsg.Send().

32

Re: AHK: Отправить email при событии

a := "adress@gmail.com"
SendMail(a)
SendMail("adress@gmail.com")
SendMail(adress@gmail.com)

SendMail(To)
{
   msgbox % to
}

33

Re: AHK: Отправить email при событии

Malcev, получилось. Спасибо!

34

Re: AHK: Отправить email при событии

Не удается прикрепить файл без расширения:

sAttach := "C:\Users\" A_UserName "\AppData\file" sendpng

Без переменной в пути файл прикрепляется:

sAttach := "D:\file" sendpng

Подскажите, где ошибка?