Перейти к основному содержанию

hMailServer — вырезаем текст из письма

hmailserver

Задачку мне подкинули, вырезать из входящего письма часть текста. Задачка обычная, иногда требуется вырезать кусок лишнего текста, это может быть:

  • ненужный рекламный блок
  • нежелательный футер
  • чувствительная информация в виде номеров банковских карт или баланс счёта
  • любая другая ненужная информация, от которой нужно избавиться

В hMailServer есть возможность писать собственные скрипты. Напишем такой скрипт, который регулярным выражением будет находить какой-то текст и вырезать его. Таким же способом можно не вырезать текст, а заменять его другим.

Скрипт для вырезания текста из сообщения

Включаем скрипты: Настройки → Дополнительно → Скрипты.

mail

Сохранить.

Кнопка Показать откроет директорию с файлом скриптов. По умолчанию это C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs. Редактируем файл EventHandlers.vbs. Следует помнить, что после внесения изменений в файл нужно нажать кнопку Перезагрузить, при этом изменения внесутся в память hMailServer. Кнопка Проверка проверяет код на наличие ошибок.

Добавляем код:

 
EventHandlers.vbs

hmail

Здесь:

  • oApp — объект для hMailServer.Application, вынесен в глобальные для использования в других функциях
  • user — администратор hMailServer, вынесен в глобальные для использования в других функциях
  • pwd — пароль администратора hMailServer, вынесен в глобальные для использования в других функциях
  • MailClean — функция удаления ненужного текста из тела письма
  • StrConvert — вспомогательная функция для конвертации текста, нужна для поддержки кириллицы
  • MyPattern — регулярное выражение для поиска ненужной строки

Стоит обратить внимание на работу с кодировками, особенно если требуется работать с кириллицей. И не забывайте о том, что письмо может быть текстовым или HTML.

Пример настройки ящика

Настроим ящик cleantest@internet-lab.ru, Переключаемся на вкладку правила.

hmail

Добавляем новое правило, у меня уже добавлено, назвал его: "CleanTest".

hmail

Какой добавлять критерий — решать вам. Если нужно обрабатывать все сообщения, указываем Размер сообщения > 0. Если нужно чистить письма только от определённого отправителя или получателя — указываем соответствующий адрес. Критериев может быть несколько.

Добавляем действие "Выполнить скрипт".

mail

Выполняем скрипт MailClean. Сохраняем изменения.

Конец

На этом всё, самое сложное было разобраться с кодировками. Для дебага я записывал в файл промежуточные данные и смотрел какие кодировки получаются. Код дебага был в три раза больше итоговой функции.

P.S. VBS скрипт у меня сохранён в UTF-8.

Теги

 

Похожие материалы