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

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.

Теги

 

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

Тестовый вирус EICAR

Для проверки антивирусов существует специальный тестовый командный файл eicar.com. Файл не содержит фрагментов вирусного кода, поэтому его безопасно пересылать. Большинство антивирусов реагируют на него как на вирус, обычно указывая соответствующее название, к примеру EICAR-AV-Test.

Теги