Страница 1 из 1

Преобразование номеров телефонов в теле письма в ссылки на уровне exim'а.

Добавлено: 2021-01-18 12:20:52
Lazy caT
Доброго времени суток, уважаемые.

Есть такой вопрос.
Есть необходимость оформить номера всех телефонов, в теле письма (в HTML), в ссылку формата

Код: Выделить всё

<a href="tel://+70123456789">+7 (012) 345 67 89</a>

на уровне сервера (exim4).
Возможно ли подобное провернуть с помощью sytem_filter?

Т.к. я в exim'овском перле, да и в перле, вообще никак, есть ли какие-нибудь примеры?
Хотя бы, примеры подмены текста (с помощью фильтров), дальше я сам попробую "допереть". :)

Преобразование номеров телефонов в теле письма в ссылки на уровне exim'а.

Добавлено: 2021-01-18 22:11:10
Lazy caT
Так, определенный прогресс есть.

Код: Выделить всё

if $message_body matches "[\\\\+]?[\\\\d{1}]?[\\\\s\\|-]?[\\\\(]?\\(\\\\d{3,5}\\)[\\\\)]?[\\\\s\\|-]?\\(\\\\d{1,3}\\)[\\\\s\\|-]?\\(\\\\d{2}\\)[\\\\s\\|-]?\\(\\\\d{2}\\)"
then

    logwrite "EXIM FILTER DEBUG: Found 8 $1 $2 $3 $4 "
  
else

    logwrite "EXIM FILTER: not found or error"

endif
Используя эту конструкцию, фильтр находит в теле сообщения номер телефона и в лог пишет что "Found 8 012 345 67 89".

А как можно заменить в теле одно на другое?
Это я, что-то, сообразить никак не могу.

А если номеров телефонов будет несколько?

Преобразование номеров телефонов в теле письма в ссылки на уровне exim'а.

Добавлено: 2021-01-21 14:20:20
Alex Keda
а зачем такой геморой?
а если дефисы вместо пробелов будут?

Преобразование номеров телефонов в теле письма в ссылки на уровне exim'а.

Добавлено: 2021-01-24 12:31:45
Lazy caT
Alex Keda писал(а):
2021-01-21 14:20:20
а если дефисы вместо пробелов будут?
В патерне предусмотрено уже наличие дефисов, пробелов и вообще, отсутствие любых символов между цифрами.

Только вот одно но. Похоже мне придется отказаться от этой затеи.
Пробовал через pipe, в system-filter, вызвать sed с преобразованием тела письма, и через router/transport сделать, с передачей тела письма для обработки во внешний скрипт, и через передачу в скрипт message-id поиска и преобразования письма в spool'е. Всё равно после, не смог я преобразованное письмо завернуть обратно в exim на доставку. :unknown:

Видимо мозгов у меня не хватает чтобы провернуть подобное.

Пошел другим путем. Написал, пока только для outlook (в офисе, всё равно, все в основном, только ими пользуются), VBA-скрипт с преобразованием.