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

EXIM, sendmail, postfix, Dovecot и прочие. Решение проблем связанных с работой электронной почты

Модератор: xM

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

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

Непрочитанное сообщение Lazy caT » 2021-01-18 12:20:52

Доброго времени суток, уважаемые.

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

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

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

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

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

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

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

Непрочитанное сообщение Lazy caT » 2021-01-18 22:11:10

Так, определенный прогресс есть.

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

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".

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

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

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

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

Непрочитанное сообщение Alex Keda » 2021-01-21 14:20:20

а зачем такой геморой?
а если дефисы вместо пробелов будут?
Убей их всех! Бог потом рассортирует...

Аватара пользователя
Lazy caT
мл. сержант
Сообщения: 101
Зарегистрирован: 2008-09-11 9:59:17
Откуда: Местные мы...
Контактная информация:

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

Непрочитанное сообщение Lazy caT » 2021-01-24 12:31:45

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

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

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

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