ограничение размера почтового сообщения в utl_smtp - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть процедура для отправки почты с использованием utl_smtp. Каков максимальный размер почтового сообщения, которое я могу отправить, и если размер моего почтового сообщения превышает это ограничение, то как я могу его отправить?

Ответы [ 2 ]

1 голос
/ 07 декабря 2011

Просто отправьте его кусками:

    l_offset  := 1;
    l_amount := 1900;
    utl_smtp.open_data(l_connection);
    while l_offset < dbms_lob.getlength(l_body_html) loop
        utl_smtp.write_data(l_connection,
                            dbms_lob.substr(l_body_html,l_amount,l_offset));
        l_offset  := l_offset + l_amount ;
        l_amount := least(1900,dbms_lob.getlength(l_body_html) - l_amount);
    end loop;
0 голосов
/ 07 декабря 2011

С Документация Oracle :

Правила и ограничения API не налагает никаких ограничений или проверку диапазона.Однако вы должны знать о следующих ограничениях по размеру для различных элементов SMTP.Отправка данных, которые превышают эти ограничения, могут привести к ошибкам, возвращаемым сервером.

Таблица 178-5 Ограничение размера SMTP

Элемент |Ограничение размера

пользователь |Максимальная общая длина имени пользователя составляет 64 символа.

domain |Максимальная общая длина доменного имени или номера составляет 64 символа.

путь |Максимальная общая длина обратного или прямого пути составляет 256 символов (включая знаки пунктуации и разделители элементов).

командная строка |Максимальная общая длина командной строки, включая командное слово и, составляет 512 символов.

строка ответа |Максимальная общая длина строки ответа, включая код ответа и 512 символов.

текстовая строка |Максимальная общая длина текстовой строки, включая символ, составляет 1000 символов (но не считая дублирующую начальную точку для прозрачности).

буфер получателей |Максимальное общее количество получателей, которое должно быть буферизовано, составляет 100 получателей.

В любом случае, я думаю, что если ваше тело электронной почты слишком большое, получатель отклонит его ...

ОБНОВЛЕНИЕ В любом случае, если вы отправляете такие большие данные по электронной почте, что-то не так.Вы должны использовать другое решение.Клиент, который читает данные из базы данных и представляет их пользователю в удобном формате.Есть oracle discoverer, или вы можете разработать приложение с помощью Java или PHP ... Есть много вариантов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...