Задачку мне подкинули, вырезать из входящего письма часть текста. Задачка обычная, иногда требуется вырезать кусок лишнего текста, это может быть:
- ненужный рекламный блок
- нежелательный футер
- чувствительная информация в виде номеров банковских карт или баланс счёта
- любая другая ненужная информация, от которой нужно избавиться
В hMailServer есть возможность писать собственные скрипты. Напишем такой скрипт, который регулярным выражением будет находить какой-то текст и вырезать его. Таким же способом можно не вырезать текст, а заменять его другим.
Скрипт для вырезания текста из сообщения
Включаем скрипты: Настройки → Дополнительно → Скрипты.
Сохранить.
Кнопка Показать откроет директорию с файлом скриптов. По умолчанию это C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs. Редактируем файл EventHandlers.vbs. Следует помнить, что после внесения изменений в файл нужно нажать кнопку Перезагрузить, при этом изменения внесутся в память hMailServer. Кнопка Проверка проверяет код на наличие ошибок.
Добавляем код:
Здесь:
- oApp — объект для hMailServer.Application, вынесен в глобальные для использования в других функциях
- user — администратор hMailServer, вынесен в глобальные для использования в других функциях
- pwd — пароль администратора hMailServer, вынесен в глобальные для использования в других функциях
- MailClean — функция удаления ненужного текста из тела письма
- StrConvert — вспомогательная функция для конвертации текста, нужна для поддержки кириллицы
- MyPattern — регулярное выражение для поиска ненужной строки
Стоит обратить внимание на работу с кодировками, особенно если требуется работать с кириллицей. И не забывайте о том, что письмо может быть текстовым или HTML.
Пример настройки ящика
Настроим ящик cleantest@internet-lab.ru, Переключаемся на вкладку правила.
Добавляем новое правило, у меня уже добавлено, назвал его: "CleanTest".
Какой добавлять критерий — решать вам. Если нужно обрабатывать все сообщения, указываем Размер сообщения > 0. Если нужно чистить письма только от определённого отправителя или получателя — указываем соответствующий адрес. Критериев может быть несколько.
Добавляем действие "Выполнить скрипт".
Выполняем скрипт MailClean. Сохраняем изменения.
Конец
На этом всё, самое сложное было разобраться с кодировками. Для дебага я записывал в файл промежуточные данные и смотрел какие кодировки получаются. Код дебага был в три раза больше итоговой функции.
P.S. VBS скрипт у меня сохранён в UTF-8.