Что нового

[Сеть, интернет] Не работает скипр отправки почты через CDO.Message. Помогите исправить ошибку

vaf

Новичок
Сообщения
174
Репутация
2
Добрый день, уважаемые форумчане. Нашел на форуме скрипт отправки почты, но он почему то при запуске или компиляции выдает ошибку

error: missing separator character before keyword.
Ошибка в строке .To = $ToAddress
В чем может быть проблема ?

Заранее спасибо.

Код:
_send("тааакс", "кое что новое", "")

Func _send($Body, $Subject, $Attachment)
$FromAddress = '[email protected]'
$ToAddress = '[email protected]'
$Body = ' '
$SMTPServer = 'smtp.yandex.ru'
$Username = '[email protected]'
$Password = "password"
$Port = '25'

$str = "http://schemas.microsoft.com/cdo/configuration/"
$hMAIL = ObjCreate ("CDO.Message")
    With $hMAIL
        .From = $FromAddress
        .To = $ToAddress
        .Subject = $Subject
        .TextBody = $Body
        .AddAttachment ($Attachment)
    EndWith
    With $hMAIL.Configuration.Fields
        .Item ($str & "sendusing") = 2
        .Item ($str & "smtpserver") = $SMTPServer
        .Item ($str & "smtpauthenticate") = 1
        .Item ($str & "sendusername") = $Username
        .Item ($str & "sendpassword") = $Password
        .Item ($str & "smtpserverport") = $Port
        .Update
    EndWith
$hMAIL.Send
EndFunc
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
964
vaf
error: missing separator character before keyword.
.To
~~~~~~~~~^

To это зарезервированное ключевое слово, но так как объект IMessage имеет метод ToTo как мы выяснили ключевое слово) то Autoit "ругается", на то, что отсутствует разделитель перед ключевым словом.
Не обращайте внимание.
 

Vlasssov

Осваивающий
Сообщения
430
Репутация
25
С этим же скриптом


Код:
$bd_copy = "C:\proerk\email_sinhr\work\laz.mdb"

_send("Проверка", "База данных", $bd_copy)

Func _send($Body, $Subject, $Attachment)
$FromAddress = '[email protected]'
$ToAddress = '[email protected]'
$Body = ' '
$SMTPServer = 'smtp.yandex.ru'
$Username = '[email protected]'
$Password = "123"
$Port = '25'

$str = "http://schemas.microsoft.com/cdo/configuration/"

$hMAIL = ObjCreate ("CDO.Message")

$hMAIL.Configuration.Fields.Item ($str & "sendusing") = 2
$hMAIL.Configuration.Fields.Item ($str & "smtpserver") = $SMTPServer
$hMAIL.Configuration.Fields.Item ($str & "smtpauthenticate") = 1
$hMAIL.Configuration.Fields.Item ($str & "sendusername") = $Username
$hMAIL.Configuration.Fields.Item ($str & "sendpassword") = $Password
$hMAIL.Configuration.Fields.Item ($str & "smtpserverport") = $Port
$hMAIL.Configuration.Fields.Update

$hMAIL.From = $FromAddress
$hMAIL.To = $ToAddress
$hMAIL.Subject = $Subject
$hMAIL.TextBody = $Body
$hMAIL.AddAttachment ($Attachment)
$hMAIL.Send

EndFunc



Код:
--> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop
C:\proerk\email_sinhr\send_cdo.au3 (32) : ==> The requested action with this object has failed.:
$hMAIL.Send
$hMAIL.Send^ ERROR

Как??? Почему метод send
The requested action with this object has failed
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
Vlasssov [?]
Как??? Почему метод send
Вот именно, нужен метод, а вы свойства вызываете. :smile:
Добавьте в конец этой строки две скобки () чтобы было так:
Код:
$hMAIL.Send()
 

Vlasssov

Осваивающий
Сообщения
430
Репутация
25
alex33 сказал(а):
Vlasssov [?]
Как??? Почему метод send
Вот именно, нужен метод, а вы свойства вызываете. :smile:
Добавьте в конец этой строки две скобки () чтобы было так:
Код:
$hMAIL.Send()

На самом деле глюк был общий... Так и не понял, что это было. Рабочий вариант. Для Yandex

Код:
Func _SendYandex($Login, $Password, $ToAddress,  $subject, $body, $Attachment)

$SMTPServer = 'smtp.yandex.ru'
$Port = '465'
$FromAddress = $Login
$str = "http://schemas.microsoft.com/cdo/configuration/"


$hMAIL = ObjCreate ("CDO.Message")

$hMAIL.Configuration.Fields.Item ($str & "sendusing") = 2
$hMAIL.Configuration.Fields.Item ($str & "smtpserver") = $SMTPServer
$hMAIL.Configuration.Fields.Item ($str & "smtpauthenticate") = 1
$hMAIL.Configuration.Fields.Item ($str & "sendusername") = $Login
$hMAIL.Configuration.Fields.Item ($str & "sendpassword") = $Password
$hMAIL.Configuration.Fields.Item ($str & "smtpserverport") = $Port
$hMAIL.Configuration.Fields.Item ($str & "smtpusessl") = True

$hMAIL.Configuration.Fields.Update

$hMAIL.From = $FromAddress
$hMAIL.To = $ToAddress
$hMAIL.Subject = $Subject
$hMAIL.TextBody = $Body
$hMAIL.AddAttachment ($Attachment)
$hMAIL.Send

EndFunc
 
Верх