1

Тема: AHK: Отправка сообщений с вложениями через CDO

Здравствуйте, понадобилась автоматизация данного процесса. Изучив просторы интернета нашёл такой код (аж из 2014):

pmsg 			:= ComObjCreate("CDO.Message")
pmsg.From 		:= """AHKUser"" <...@gmail.com>"
pmsg.To 		:= "anybody@somewhere.com"
pmsg.BCC 		:= ""   ; Blind Carbon Copy, Invisable for all, same syntax as CC
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   		:= "Path_Of_Attachment" ; 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 := "...@gmail.com"
fields.sendpassword := "your_password_here"
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()

Все данные у себя я заполнил/изменил. Номер порта выставил 25. После "таймаута" выходит ошибка 0x80040213.
Error: 0x80040213
Source: CDO.Message.1
Description: Транспорту не удалось подключиться к серверу.
HelpFile: (null)
HelpContext: 0
Specifically: Send

---> pmsg.Send()

Прошу вас о помощи, либо задачка сложная, либо я тупой (скорее второе).

2

Re: AHK: Отправка сообщений с вложениями через CDO

Возможно, нужно ввести пароль приложения (а не пароль аккаунта). Порт 465.

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

3 (изменено: yakmuve, 2022-04-13 09:51:23)

Re: AHK: Отправка сообщений с вложениями через CDO

teadrinker Хм, сделал пароль приложения (Windows, ToMail (написал название ahk без указания расширения) и на выходе получил 16-ти значный пароль) и вставил его в код на место пароля,

fields.sendusername := "123456789@gmail.com"
fields.sendpassword := "****************"

однако ошибка осталась. Может быть я как-то некорректно указал имя пользователя или пароль?

4

Re: AHK: Отправка сообщений с вложениями через CDO

Не знаю, у меня так работает:

objMessage := ComObjCreate("CDO.Message")

Keys := { Subject: "Example CDO Message"
        , From: """AHKUser"" <******@gmail.com>"
        , To: "******@mail.ru"
        , Subject: "hi"
        , HTMLBody: "<p style=""color: #004488; font-size: 15pt; font-family: Calibri,Verdana"">"  ; или TextBody 
                  . "Первая строка сообщения<br>Вторая строка сообщения</p>" }

for key, value in Keys
   objMessage[key] := value

objMessage.AddAttachment("D:\Downloads\Иконки\AutoHotKey Logo (Medium).ico")

namespace := "http://schemas.microsoft.com/cdo/configuration/"
Fields := { sendusing: 2
          , smtpserver: "smtp.gmail.com"
          , smtpauthenticate: 1
          , sendusername: "******@gmail.com"
          , sendpassword: "****************" ; пароль приложения https://support.google.com/accounts/answer/185833?hl=ru&ref_topic=7189145
          , smtpusessl: 1
          , smtpconnectiontimeout: 60
          , smtpserverport: 465 }

for field, value in Fields
   objMessage.Configuration.Fields.Item(namespace . field) := value
   
objMessage.Configuration.Fields.Update
objMessage.Send

Проверял на Windows 7 и 10.

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

5 (изменено: yakmuve, 2022-04-13 12:24:37)

Re: AHK: Отправка сообщений с вложениями через CDO

teadrinker, хм, а что вы подставляли вместо

From: """AHKUser"" <******@gmail.com>"

просто может я тупой новичок что-то не туда поставил...

6

Re: AHK: Отправка сообщений с вложениями через CDO

То же самое, вместо звёздочек своё имя пользователя.

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

7

Re: AHK: Отправка сообщений с вложениями через CDO

teadrinker, благодарю, вы помогли не только мне, но и людям из 2025, которые тоже будут задаваться таким вопроса хе-хе. Спасибо вам большое!

8

Re: AHK: Отправка сообщений с вложениями через CDO

teadrinker
Добрый день, а возможно ли сохранение письма в "отправленных"?

9

Re: AHK: Отправка сообщений с вложениями через CDO

Во всяком случае не с помощью объекта CDO.Message.

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

10 (изменено: Phoenixxx_Czar, 2022-04-18 09:08:39)

Re: AHK: Отправка сообщений с вложениями через CDO

А не подскажите, как передать русский текст?
Нашел решение, нужно после "objMessage := ComObjCreate("CDO.Message")" добавить:

objMessage.BodyPart.Charset := "windows-1251"
Win10: LTSC (v1809); AHK: ANSI (v1.1.33.10)

11

Re: AHK: Отправка сообщений с вложениями через CDO

По-моему, лучше utf-8.

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