Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp битые письма в зависимости от длины строки subject / 5 сообщений из 5, страница 1 из 1
21.11.2017, 17:01
    #39557038
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_smtp битые письма в зависимости от длины строки subject
Доброго времени суток!

Есть процедура для отправки сообщений.
Subject формируется как показано ниже:

Код: plsql
1.
2.
3.
4.
5.
utl_smtp.write_raw_data(mail_conn,
                            utl_raw.cast_to_raw('Subject: =?windows-1251?B?' ||
                                                utl_raw.cast_to_varchar2(utl_encode.base64_encode(utl_raw.cast_to_raw(convert(subject,
                                                                                                                              'CL8MSWIN1251')))) ||
                                                '?='));



Если в subject используются длинные строки(~80-100 символов), приходят битые письма.

Например в поле subject будет отображаться: "=?windows-1251?B?c2RmaW91Z2hzZGlvdWZnaHNpb2R1ZmhnaW9zdWRmaGdpb3N1ZGZoZ2lvc2R1Zmhn"

А в теле письма: "aW9zZGZ1aGdpb3NkZmhn?="

Подскажите, пожалуйста, чтиво, которое поможет решить эту проблему.

Гуглил и RFC 2822 читал, но так и не понял в чем суть.
...
Рейтинг: 0 / 0
21.11.2017, 17:03
    #39557040
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_smtp битые письма в зависимости от длины строки subject
israelshamir
Например в поле subject будет отображаться: "=?windows-1251?B?c2RmaW91Z2hzZGlvdWZnaHNpb2R1ZmhnaW9zdWRmaGdpb3N1ZGZoZ2lvc2R1Zmhn"

А в теле письма: "aW9zZGZ1aGdpb3NkZmhn?="

Гуглил и RFC 2822 читал, но так и не понял в чем суть.

То есть часть темы выносится в тело сообщения.
...
Рейтинг: 0 / 0
21.11.2017, 17:19
    #39557052
ищи mimewords
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_smtp битые письма в зависимости от длины строки subject
israelshamir,
нашел вот такой вот код, а вообще проще послать себе письмо с длинной темой и посмотреть как закодируется

Код: 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.
      -- encode to base64 mimeword

      FUNCTION MIMEHEADER_ENCODE(s#string VARCHAR2) RETURN VARCHAR2 IS

            BEGIN

               RETURN '=?UTF-8?B?' ||

                    UTL_RAW.CAST_TO_VARCHAR2(UTL_ENCODE.base64_encode(UTL_RAW.CAST_TO_RAW(s#string /* convert(s#string, 'CL8MSWIN1251') ? */ )))

                    ||'?=';

            END;



      -- encode subject, split to mimewords

      FUNCTION subject_encode(subj in varchar2) return varchar2 is

            enc_size  CONSTANT number(2) := 30;

            l_subject  varchar2(300) := subj;

            enc_subj   varchar2(400);

            begin

                 while length (l_subject) > 0 loop



                    if enc_subj is not null then  enc_subj := enc_subj || UTL_TCP.CRLF ||'    '; end if;

                    enc_subj := enc_subj || mimeheader_encode( substr (l_subject,1,enc_size) );



                    l_subject := substr (l_subject,enc_size+1);

                 end loop;

                 return enc_subj;

            end;
...
Рейтинг: 0 / 0
21.11.2017, 17:53
    #39557078
utl_smtp битые письма в зависимости от длины строки subject
israelshamirГуглил и RFC 2822 читал, но так и не понял в чем суть.Ограничение длины строки заголовка. Способ переноса зависит от энкодинга.
...
Рейтинг: 0 / 0
22.11.2017, 09:26
    #39557302
israelshamir
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
utl_smtp битые письма в зависимости от длины строки subject
Всем спасибо за помощь.
Вот нашел: www.sql.ru/forum/882738/utl-smtp-send-data-i-zagolovki-zakodirovannye-v-base64
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp битые письма в зависимости от длины строки subject / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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