Автор Тема: Проигнорировать ошибку при отправке email и продолжить работу скрипта  (Прочитано 1890 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн DesMono [?]

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

[nofollow]

Пример:
Код: AutoIt [Выделить]
_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


Русское сообщество AutoIt


Помечен как лучший ответ пользователем DesMono Отправлен Май 07, 2014, 16:16:13

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4102
  • Репутация: 1089
    • Награды
  • Версия AutoIt: 3.3.14.0
Либо обновить AutoIt до последней версии 3.3.10.2, в которой ошибки объектов не завершают работу скрипта.
Либо отлавливать эти ошибки при помощи
Код: AutoIt [Выделить]
ObjEvent ( "AutoIt.Error" [, "function name"] )


Оффлайн Medic84 [?]

  • Администратор
  • *
  • Сообщений: 1416
  • Репутация: 303
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Поставь обработчик ошибок:
Код: AutoIt [Выделить]
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


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

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

Русское сообщество AutoIt


Оффлайн DesMono [?]

  • Новичок
  • *
  • Сообщений: 19

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

помог, спасибо.

Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
13 Ответов
7389 Просмотров
Последний ответ Октябрь 13, 2010, 03:00:35
от Gromadina
6 Ответов
4328 Просмотров
Последний ответ Октябрь 27, 2011, 23:54:35
от Garrett
5 Ответов
3097 Просмотров
Последний ответ Февраль 26, 2013, 00:29:27
от Ganibal95
5 Ответов
2615 Просмотров
Последний ответ Декабрь 05, 2013, 16:28:21
от WSWR
3 Ответов
2294 Просмотров
Последний ответ Декабрь 16, 2013, 17:43:20
от InnI
1 Ответов
900 Просмотров
Последний ответ Май 23, 2015, 12:56:15
от joiner
2 Ответов
612 Просмотров
Последний ответ Сентябрь 25, 2017, 09:41:51
от xoop
12 Ответов
1557 Просмотров
Последний ответ Октябрь 30, 2017, 09:18:45
от musicstashall
2 Ответов
437 Просмотров
Последний ответ Февраль 27, 2018, 21:27:13
от dr.room
12 Ответов
922 Просмотров
Последний ответ Январь 03, 2019, 14:31:30
от alex33