Что нового

Проигнорировать ошибку при отправке email и продолжить работу скрипта

DesMono

Новичок
Сообщения
19
Репутация
0
Прошу помочь дилетанту..
Есть скрипт, который при запуске отсылает на email некоторую информацию, после чего (вне зависимости от того, удалось отправить письмо или нет) скрипт должен продолжить свою работу.
Но... при неудачной отправке (к примеру, я сменил пароль на почте, а в скрипте он остался старым), вываливается ошибка и скрипт падает не завершив все последующие задачи.
Можно ли как-то проигнорировать данную ошибку и продолжить выполнение скрипта?



Пример:
Код:
_send ('Текст', 'Тема')

MsgBox(0, 'script', 'finish')

Func _send($Body, $Subject)
$FromAddress = '[email protected]' ; Адрес отправителя
$ToAddress = '[email protected]' ; Адрес получателя
$Username = '[email protected]' ; Логин отправителя
$Password = "12345" ; Пароль почты отправителя
$SMTPServer = 'smtp.gmail.com' ; SMTP-сервер
$Port = 465 ; Порт сервера
$SSL = 1 ; SSL

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

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Либо обновить AutoIt до последней версии 3.3.10.2, в которой ошибки объектов не завершают работу скрипта.
Либо отлавливать эти ошибки при помощи
Код:
ObjEvent ( "AutoIt.Error" [, "function name"] )
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Поставь обработчик ошибок:
Код:
Global $g_eventerror = 0
$oMyError = ObjEvent("AutoIt.Error", "MyErrFunc")

;код скрипта

Func MyErrFunc()

	MsgBox(0, "Ошибка", "Обнаружена ошибка!" & @CRLF & @CRLF & _
			"Описание: " & $oMyError.description & @CRLF & _
			"Подробное описание:" & $oMyError.windescription & @CRLF & _
			"Номер строки: " & $oMyError.scriptline)

	Local $err = $oMyError.number
	If $err = 0 Then $err = -1

	$g_eventerror = $err ; to check for after this function returns
EndFunc   ;==>MyErrFunc


В функции ошибку сможешь замять.
 
Автор
D

DesMono

Новичок
Сообщения
19
Репутация
0
InnI, после обновления до 3.3.10.2 сразу возникли некоторые проблемы со скриптом, пришлось откатиться...
а вот
Код:
ObjEvent ( "AutoIt.Error" [, "function name"] )
помог, спасибо.
 
Верх