powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_SMTP отправка вложения (разбивает по 1000 символов)
4 сообщений из 4, страница 1 из 1
UTL_SMTP отправка вложения (разбивает по 1000 символов)
    #39672144
mserjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем добрый день.

Подскажите, пожалуйста, может кто знает или сталкивался с такой ситуацией:
отправляю вложение с помощью UTL_SMTP.write_raw_data, в итоге файл приходит разбитый по 1000 символов в каждой строке, хотя исходный файл без такой разбивки.
может это какая-то настройка оракла устанавливает максимальную длину строки вложения? или какие-то ограничения в самом UTL_SMTP ?

Оракл 11.2.0.4.0
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
declare
    Subject IN VARCHAR2 := 'Test';
    Message IN VARCHAR2 := 'Test message';
    ToEmail IN VARCHAR2 := 'test02@mail.com';
    Attachment IN CLOB;
    FilenameAttachment IN VARCHAR2;
    FromEmail IN VARCHAR2 := 'test01@mail.com';
    FromName IN VARCHAR2 := 'TEST';
    Priority IN INTEGER := 3;
    ContentType IN VARCHAR2 := 'application/excel;';
    con UTL_SMTP.connection;
    AttachmentLength PLS_INTEGER;
    amount BINARY_INTEGER := 30000;
    BUFFER VARCHAR2(32000);
    offset PLS_INTEGER := 1;
    MIME_BOUNDARY  VARCHAR2(50) := '=====Boundary======';
begin
    -- здесь Attachment вычитывает файл DBMS_LOB.LOADCLOBFROMFILE

    -- setup mail header
    con := UTL_SMTP.OPEN_CONNECTION('localhost', 25);
    UTL_SMTP.helo(con, SYS_CONTEXT('USERENV', 'DB_DOMAIN'));
    UTL_SMTP.Mail(con, LOWER(FromEmail));
    UTL_SMTP.rcpt(con, LOWER(ToEmail));
    UTL_SMTP.open_data(con);

    UTL_SMTP.write_data(con, 'From: "'||FromName||'" <'||LOWER(FromEmail)||'>'||UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'To: <'||LOWER(ToEmail)||'>'||UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'Subject: '||Subject||UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'X-Priority: '||Priority||UTL_TCP.CRLF);

    UTL_SMTP.write_data(con, 'Mime-Version: 1.0' || UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'Content-Type: '||MIME_MIXED||' boundary="'||MIME_BOUNDARY||'"' || UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, '--'||MIME_BOUNDARY || UTL_TCP.CRLF); 
    UTL_SMTP.write_data(con, 'Content-type: text/plain' || UTL_TCP.CRLF); 

    -- Mail Body
    UTL_SMTP.write_data(con, UTL_TCP.CRLF);
    UTL_SMTP.write_raw_data(con, UTL_RAW.cast_to_raw(Message));
    UTL_SMTP.write_data(con, UTL_TCP.CRLF);

    -- put footer to end of mail
    UTL_SMTP.write_data(con, UTL_TCP.CRLF || UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'Message from User001 sent at '||TO_CHAR(LOCALTIMESTAMP, 'yyyy-mm-dd hh24:mi:ss'));
    UTL_SMTP.write_data(con, UTL_TCP.CRLF);

    -- Mail Attachment
    UTL_SMTP.write_data(con, UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, '--'||MIME_BOUNDARY || UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'Content-Type: '||ContentType||' name="'||FilenameAttachment||'"'|| UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, 'Content-Disposition: attachment; filename="'||FilenameAttachment||'"'|| UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, UTL_TCP.CRLF);

    AttachmentLength := DBMS_LOB.GETLENGTH(Attachment);
    plog.dolog('SENDMAIL_PKG.SendMail: AttachmentLength='||AttachmentLength);
    LOOP
        EXIT WHEN offset > AttachmentLength;
        DBMS_LOB.READ(Attachment, amount, offset, BUFFER);
        plog.dolog('SENDMAIL_PKG.SendMail: BUFFER='||BUFFER);
        UTL_SMTP.write_raw_data(con, UTL_RAW.cast_to_raw(BUFFER));
        offset := offset + amount;
    END LOOP;

    UTL_SMTP.write_data(con, UTL_TCP.CRLF);
    UTL_SMTP.write_data(con, '--'||MIME_BOUNDARY||'--' || UTL_TCP.CRLF);

    CloseMail(con);
end;
...
Рейтинг: 0 / 0
UTL_SMTP отправка вложения (разбивает по 1000 символов)
    #39672659
Kompromiss
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Насколько я знаю, это не проблема Oracle, а требование SMTP-протокола.
Файлы при передаче обычно кодируют в base64.
...
Рейтинг: 0 / 0
UTL_SMTP отправка вложения (разбивает по 1000 символов)
    #39672660
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
UTL_SMTP отправка вложения (разбивает по 1000 символов)
    #39675499
mserjo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за ответы
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / UTL_SMTP отправка вложения (разбивает по 1000 символов)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]