Что нового

[Сеть, интернет] Как отловить ошибку при отправке email?

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Для отправки email использую скрипт, в котором создается объект ObjCreate("CDO.Message"). Email отправляется при помощи метода $objEmail.Send. Вот как выглядит его окончание:
Код:
$test=$objEmail.Send

If @error=1 Then
	MsgBox(0,"ERROR","Отправить электронную почту не удалось")
Else
	MsgBox(0,"OK","Электронная почта успешно отправлена")
EndIf


Если никаких проблем с отправкой не возникает, то при помощи MsgBox выводится сообщение об успешной отправке. Но в случае каких-либо проблем, возникших при передаче, скрипт завершается с ошибкой The requested action with this object has failed.: $test=$objEmail.Send. Причем, до оператора If...Endif дело не доходит (т.е. никакое сообщение при помощи MsgBox не выводится и ошибку можно видеть только в окне редактора Output). Но как быть если скрипту необходимо знать о статусе отправки до завершения скрипта?
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
Код:
ObjEvent()

Пример: http://autoit-script.ru/index.php?topic=10712.msg70736#msg70736
 
Автор
V

vitaliy4us

Новичок
Сообщения
158
Репутация
4
Спасибо, конечно, но нельзя ли поподробнее о механизме. Если я правильно понял, то создаваемый объект $oEvent будет постоянно получать сообщения об ошибках, возникающих в работе Autoit. Но как понять, что ошибка возникла именно с объектом $objEmail? И еще вопрос - мы создаем переменную булевого типа $iError, а в функции __com_getError() передаем ей значение $iError = $oEvent.Number вроде как небулевое. Я понимаю, что AutoIt допускает вольности с типами переменных, но это сделано ли это из каких-либо специфических соображений? А так все работает, еще раз спасибо за совет.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
vitaliy4us [?]
об ошибках, возникающих в работе Autoit
Нет, не об ошибках AutoIt. А об ошибках COM-объекта, с которым работает AutoIt.

ошибка возникла именно с объектом $objEmail
Это в случае, если в скрипте два разных COM-объекта? Как узнать какой из них допустил ошибку?
Не знаю... более, чем с одним не работал... теперь и самому интересно.

AutoIt допускает вольности с типами переменных
Не то, чтобы "допускает"... просто у него все переменные - variant. Но приведение типов происходит по определённым правилам.
Подробнее здесь: http://autoit-script.ru/autoit3_docs/intro/lang_datatypes.htm
 
Верх