powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp текст отправляемого письма
25 сообщений из 28, страница 1 из 2
utl_smtp текст отправляемого письма
    #39577887
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
формирую письмо и отправляю
Код: plsql
1.
2.
3.
4.
-- куча всякой хрени
    utl_smtp.write_data(v_Mail_Conn, '--' || boundary || '--');
    utl_smtp.close_data(v_Mail_Conn);
    utl_smtp.quit(v_Mail_Conn);

можно ли как-то как посмотреть сформированный текст?
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39577903
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сниффером.
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39577946
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в чем соббссно вопрос

в письме формируем ммя вложения с подчеркиванием
В банк письмо приходит, где подчеркивания заменены на пробелы
Для банка это неприемлемо, требуют подчеркивание

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
-- запись в мои логи
            v_info_attach := v_info_attach ||
                'name=' || Mail_vars_INTERNAL_PKG.attachments(x).NAME || ' / ' || utl_raw.cast_to_raw(Mail_vars_INTERNAL_PKG.attachments(x).NAME) || CHR(13) ||
                'filename=' || Mail_vars_INTERNAL_PKG.attachments(x).fileNAME || ' / ' || utl_raw.cast_to_raw(Mail_vars_INTERNAL_PKG.attachments(x).NAME) || CHR(13);

-- список вложений
            utl_smtp.write_data(v_Mail_Conn, '--'|| boundary || Mail_vars_PKG.crlf );
            utl_smtp.write_data(v_Mail_Conn, 'Content-Type: '||Content_Type||';'|| Mail_vars_PKG.crlf );
            utl_smtp.write_data(v_Mail_Conn, ' name="');
            utl_smtp.write_raw_data(v_Mail_Conn,utl_raw.cast_to_raw(Mail_vars_INTERNAL_PKG.attachments(x).NAME));
            utl_smtp.write_data(v_Mail_Conn, '"' || Mail_vars_PKG.crlf);
            utl_smtp.write_data(v_Mail_Conn, 'Content-Transfer-Encoding: base64'|| Mail_vars_PKG.crlf );
            utl_smtp.write_data(v_Mail_Conn, 'Content-ID: '|| Mail_vars_INTERNAL_PKG.attachments(x).contentid || Mail_vars_PKG.crlf );
            utl_smtp.write_data(v_Mail_Conn, 'Content-Disposition: attachment;'|| Mail_vars_PKG.crlf );
            utl_smtp.write_data(v_Mail_Conn, ' filename="' || MAIL_PKG.ENCODE(Mail_vars_INTERNAL_PKG.attachments(x).NAME) || '"' || Mail_vars_PKG.crlf);
            utl_smtp.write_data(v_Mail_Conn, Mail_vars_PKG.crlf );


-- логи
name=MOL_2017_12_29_245.xml / 4D4F4C5F323031375F31325F32395F3234352E786D6C
filename=MOL_2017_12_29_245.xml / 4D4F4C5F323031375F31325F32395F3234352E786D6C


в логах явно виден символ 5F, т.е. подчеркивание

Админы сказали, что ни при чем


Вот думаем, куда рыть
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39577969
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала убедитесь, что пробелы - не следствие особенностей шрифта+масштаба в приладе, которой смотрит почту оператор "на той стороне". Символ подчеркивания иногда тупо не видно, что могло привести к путанице.
Пусть пришлют копи-паст из консоли, где выполнен листинг каталога с файлом.
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578007
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсылал себе, там пробелы
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578014
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxОтсылал себе, там пробелы

А дамр email'a не смотрел? Там действительно пробл или какой-то непечатный символ?

SY.
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578017
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYandreymxОтсылал себе, там пробелы

А дамр email'a не смотрел? Там действительно пробл или какой-то непечатный символ?

SY.в полученном письме в файле msg пробелы
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578019
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но я его сохранял полученное

Зы - в банке автоматический разбор. И там пробелов нет, их прога лается
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578020
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxНо я его сохранял полученное

Зы - в банке автоматический разбор. И там пробелов нет, их прога лаетсясорри, нет подчеркиваний
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578029
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxв полученном письме в файле msg пробелы

Ну тогда как Elic и сказал - сниффером. А если там _ то рыть rules на email/exchange сервере.

SY.
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578036
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Беглый поиск по Google привел к RFC-2047

Вроде в некоторых системах кодировок underscore является спец. символом и действительно трактуются как пробел.
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578038
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymxОтсылал себе, там пробелы
а если отослать =5F вместо underscore?
("Q" encoding)
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578052
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevandreymxОтсылал себе, там пробелы
а если отослать =5F вместо underscore?
("Q" encoding)спасибо, попробую
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578068
Sheriffua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx,

может это поможет?
20905938
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578654
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevandreymxОтсылал себе, там пробелы
а если отослать =5F вместо underscore?
("Q" encoding)вот так не прокатило

Код: plsql
1.
2.
3.
4.
5.
6.
            v_file_name1 := Mail_Bp_Pkg.ENCODE(Mail_Bp_Pkg.attachments(x).NAME);
            v_file_name2 := NULL;
            FOR i IN 1 .. LENGTH(v_file_name1) / 2 LOOP
                v_file_name2 := v_file_name2||'='||SUBSTR(v_file_name1, i*2-1, 2);
            END LOOP;
            utl_smtp.write_data(v_Mail_Conn, ' filename="' || v_file_name2 || '"' || crlf);

или только один символ надо было?
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578682
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevandreymxОтсылал себе, там пробелы
а если отослать =5F вместо underscore?
("Q" encoding)так заработало
Код: plsql
1.
2.
            utl_smtp.write_data(v_Mail_Conn, ' filename="' || 
            REPLACE(Mail_Bp_Pkg.ENCODE(Mail_Bp_Pkg.attachments(x).NAME), '_', '=5F') || '"' || crlf);

теперь думаю, где может откликнуться
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578685
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
utl_encode.QUOTED_PRINTABLE_ENCODE не меняет знак подчеркивания на =5F
Код: plsql
1.
SELECT UTL_RAW.cast_to_varchar2(utl_encode.QUOTED_PRINTABLE_ENCODE(utl_raw.cast_to_raw(CONVERT ('_1aы', 'UTF8') ))) from dual
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578688
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymxLeonid Kudryavtsevпропущено...

а если отослать =5F вместо underscore?
("Q" encoding)так заработало
Код: plsql
1.
2.
            utl_smtp.write_data(v_Mail_Conn, ' filename="' || 
            REPLACE(Mail_Bp_Pkg.ENCODE(Mail_Bp_Pkg.attachments(x).NAME), '_', '=5F') || '"' || crlf);

теперь думаю, где может откликнуться

заменил у себя в коде и также заработало, но не понял что за подводный камень 21078426 ?
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578691
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
trace.log,

я вообще так написал
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
-------------------------------------------------------------------------------------------------------
-- Encode
-------------------------------------------------------------------------------------------------------
FUNCTION Encode (str IN VARCHAR2, tp IN VARCHAR2 DEFAULT 'Q',
                 v_replace_underscore_to_5f NUMBER := NULL
                 ) RETURN VARCHAR2
IS
    v_replace_underscore VARCHAR2(10) := CASE WHEN v_replace_underscore_to_5f = 1 THEN '=5F' ELSE '_' END;
BEGIN
    IF tp='B' THEN
        RETURN '=?utf-8?b?'|| UTL_RAW.cast_to_varchar2(UTL_ENCODE.base64_encode(UTL_RAW.cast_to_raw (CONVERT (SUBSTR(str,1,24), 'UTF8'))))|| '?='
                           || CASE WHEN SUBSTR(str,25) IS NOT NULL THEN crlf || ' '|| ENCODE(SUBSTR(str,25),tp, v_replace_underscore_to_5f) END;
     ELSIF tp='Q' THEN
        RETURN '=?utf-8?q?' ||
                REPLACE( 
                UTL_RAW.cast_to_varchar2(utl_encode.QUOTED_PRINTABLE_ENCODE(utl_raw.cast_to_raw(CONVERT (SUBSTR(str,1,8), 'UTF8') ))),
                    '_', v_replace_underscore)
                 || '?='
                             || CASE WHEN SUBSTR(str,9) IS NOT NULL THEN crlf || ' '|| ENCODE(SUBSTR(str,9),tp, v_replace_underscore_to_5f) END;
     ELSE
        RETURN str;
     END IF;
END;
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578724
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
Код: plsql
1.
2.
3.
4.
5.
FUNCTION Encode (str IN VARCHAR2, tp IN VARCHAR2 DEFAULT 'Q',
                 v_replace_underscore_to_5f NUMBER := NULL
                 ) RETURN VARCHAR2
IS
    v_replace_underscore VARCHAR2(10)

Ничего не напутал?
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578732
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

угу, тсенкс
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578733
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreymx
Код: plsql
1.
UTL_RAW.cast_to_raw (CONVERT

Опасный говнокод.
RTFM UTL_I18N.STRING_TO_RAW (FAQ)
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578734
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elicandreymx
Код: plsql
1.
UTL_RAW.cast_to_raw (CONVERT


Опасный говнокод.
RTFM UTL_I18N.STRING_TO_RAW (FAQ) знаний и опыта в этой области очень не хватает, так что могу только поверить
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578737
trace.log
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Elicandreymx
Код: plsql
1.
2.
3.
4.
5.
FUNCTION Encode (str IN VARCHAR2, tp IN VARCHAR2 DEFAULT 'Q',
                 v_replace_underscore_to_5f NUMBER := NULL
                 ) RETURN VARCHAR2
IS
    v_replace_underscore VARCHAR2(10)

Ничего не напутал?

а что здесь не так?
...
Рейтинг: 0 / 0
utl_smtp текст отправляемого письма
    #39578738
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

подскажи еще, на что =5F заменить, а то блевать хочется

Код: plsql
1.
v_replace_underscore VARCHAR2(10) := CASE WHEN v_replace_underscore_to_5f = 1 THEN '=5F' ELSE '_' END;
...
Рейтинг: 0 / 0
25 сообщений из 28, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / utl_smtp текст отправляемого письма
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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