Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
PSergeyA
Member

Откуда: Иркутск
Сообщений: 77
Здравствуйте!
я отсылаю письма по электронной почте программой на PL/SQL, с использованием utl_smtp.
Подскажите пожалуйста, можно ли средствами PL/SQL засечь ошибки, когда письма не доходят не из-за ошибок в программе, а, например, если некорректно указан адрес получателя, или письмо недошло из-за каких-то проблемм на сервере получателе...
В общем, можно ли выловить те ошибки, из-за которых, обычно, на почтовый ящик приходят сообщения, что письмо не дошло ("Mail Delivery System" и т.п.).
18 июл 08, 06:56    [5951494]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
FUNCTION send_mail (mailhost_in IN VARCHAR2,
                       from_in     IN VARCHAR2,
                       to_in       IN VARCHAR2,
                       subject_in  IN VARCHAR2,
                       message_in  IN VARCHAR2) RETURN VARCHAR2
  IS
    conn_v UTL_SMTP.CONNECTION;
  BEGIN 
     ...
  EXCEPTION
    WHEN UTL_SMTP.transient_error OR UTL_SMTP.permanent_error THEN
    BEGIN
      UTL_SMTP.QUIT (conn_v);
      RETURN SQLERRM;
    EXCEPTION
      WHEN UTL_SMTP.transient_error OR UTL_SMTP.permanent_error THEN
        NULL;
    END;
  END send_mail;
например так
18 июл 08, 07:29    [5951512]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Второй EXCEPTION необходим, так как когда SMTP сервер лежит или недоступен - UTL_SMTP.QUIT сам в свою очередь вызовет исключение, которое есть смысл проигнорировать
18 июл 08, 07:35    [5951516]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
PSergeyA
Member

Откуда: Иркутск
Сообщений: 77
Спасибо, огромное!
18 июл 08, 08:20    [5951545]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
Elic
Member

Откуда:
Сообщений: 29990
PSergeyA
В общем, можно ли выловить те ошибки, из-за которых, обычно, на почтовый ящик приходят сообщения, что письмо не дошло ("Mail Delivery System" и т.п.).
Нет. Тут как и на обычной почте: никто тебе на твоей почте не скажет, что адресат не существует, пока письмо не доедет до его почты :)
18 июл 08, 08:34    [5951577]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Elic
PSergeyA
В общем, можно ли выловить те ошибки, из-за которых, обычно, на почтовый ящик приходят сообщения, что письмо не дошло ("Mail Delivery System" и т.п.).
Нет. Тут как и на обычной почте: никто тебе на твоей почте не скажет, что адресат не существует, пока письмо не доедет до его почты :)


Гм. Ну возможно не все, но.. Подобные
ORA-29279:                   SMTP: 550 unrouteable address [2]
ORA-29279:                   SMTP: 550 unknown user
ORA-29279:                   SMTP: 501 "..." malformed address: ....ru> may not follow "..."<...@...
то отлавливаются. А они то и приводят к "Mail Delivery System"
18 июл 08, 08:59    [5951638]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
PSergeyA
Member

Откуда: Иркутск
Сообщений: 77
Код выше мне помог, теперь эти ошибки тоже будет ловить моя программа, если возникнут, но.. такие ошибки как мне было нужно, всё-таки, похоже, нельзы поймать, как и Elic сказал.
спасибо большое всем что прояснили этот вопрос!
18 июл 08, 09:00    [5951640]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
PSergeyA
Member

Откуда: Иркутск
Сообщений: 77
кажется поторопился тему закрыть - ценные для меня сведения..
18 июл 08, 09:04    [5951651]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
Elic
Member

Откуда:
Сообщений: 29990
stil
Elic
PSergeyA
В общем, можно ли выловить те ошибки, из-за которых, обычно, на почтовый ящик приходят сообщения, что письмо не дошло ("Mail Delivery System" и т.п.).
Нет. Тут как и на обычной почте: никто тебе на твоей почте не скажет, что адресат не существует, пока письмо не доедет до его почты :)
Гм. Ну возможно не все, но.. Подобные ORA-29279 то отлавливаются. А они то и приводят к "Mail Delivery System"
Разницу между отлупом сразу и письмом потом чувствуешь?
Если тебя твой smtp-сервер послал сразу, это означает, что он не будет посылать тебе "сообщения, что письмо не дошло".
18 июл 08, 09:33    [5951763]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
stil
Member

Откуда: Кемерово
Сообщений: 1295
Elic
Разницу между отлупом сразу и письмом потом чувствуешь?
Если тебя твой smtp-сервер послал сразу, это означает, что он не будет посылать тебе "сообщения, что письмо не дошло".

И верно. Признаю свою ошибку (( Поторопился...
18 июл 08, 09:37    [5951792]     Ответить | Цитировать Сообщить модератору
 Re: можно ли средствами PL/SQL выловить ошибки отправки писем по E-mail, не по вине программы.  [new]
PSergeyA
Member

Откуда: Иркутск
Сообщений: 77
теперь наверно можно сказать - "тема закрыта".
Ещё раз спасибо за ответы!
18 июл 08, 10:08    [5952018]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить