LINUX.ORG.RU
ФорумAdmin

Exim и ошибка при вставке записи в mysql

 ,


0

1

Есть сервер с exim, пытаюсь вставить заголовок письма в таблицу, и вот периодами получаю:

Warning: ACL "warn" statement skipped: condition test deferred: MYSQL: query failed: Incorrect string value: '\xD2\xE5\xEA\xF1\xF2 ...' for column 'subject' at row 1

В mysql поле имеет тип:utf8mb4_unicode_ci, в exim прописано так: ${escape:$message_headers:} но все равно на некоторые письма дает ошибки.

Вот если поменять тип поля на blob, тогда ошибок нет, но хотелось бы в текстовом виде хранить заголовок письма.

Может у кого есть идеи как можно выкрутится?

 warn   condition   = ${lookup mysql{SET NAMES utf8mb4}{}}${lookup mysql{INSERT INTO `mail` (`mheader`) VALUES ('${escape:$message_headers:}')}}

printf «'\xD2\xE5\xEA\xF1\xF2 ...'»|iconv -f WINDOWS-1251 -t UTF-8
или иными словами делать decode заголовков до внесения в mysql или менять тип поля p.s. в exim можно налету заменить нужный header

bass ★★★★★
()
Последнее исправление: bass (всего исправлений: 1)
Ответ на: комментарий от bass

Да, это так, пока накопал что проблемные все письма, которые имеют subject такого вида:

Subject: 323357360340342353345355350345 302340370350354 356341372377342353345355350345354 361 362345354356351 "321340351362 PRO352356353345361356 - 365360340355345355350345 370350355"

При этом:

Content-Type: text/html; charset=windows-1251
Content-Transfer-Encoding: 8bit:
Не пойму что именно и почему exim не переваривает такое.

InventoRs
()
Ответ на: комментарий от InventoRs

${escape:$message_headers:}

: в конце точно нужно?
а если убрать escape?
ну и смотреть чем различаются во внешнем виде
h_subject
rh_subject
bh_subject
и что с ними делает escape

bass ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.