В hMailServer есть встроенная возможность посылать автоответ. Однако, функционал автоответчика не богат, к примеру, нет возможности отправить HTML сообщение. Пишем собственную функцию автоответа.
Заходим в админку hMailServer и создаём учётную запись в выбранном домене, например, mailtest@internet-lab.ru. При отправке сообщения на этот адрес должен сработать наш новый автоответчик.
Включаем скрипты: Настройки > Дополнительно > Скрипты.
Сохранить.
Кнопка Показать откроет директорию с файлом скриптов. По умолчанию это C:\Program Files (x86)\hMailServer\Events\EventHandlers.vbs. Редактируем файл EventHandlers.vbs. Следует помнить, что после внесения изменений в файл нужно нажать кнопку Перезагрузить, при этом изменения внесутся в память hMailServer. Кнопка Проверка проверяет код на наличие ошибок.
Добавляем код:
-
Код автоответчика
Public oApp Public Const user = "Admin" Public Const pwd = "MySuperPuperPa$$word" Sub MailTestReply(oMessage) set oApp = CreateObject("hMailServer.Application") call oApp.Authenticate(user, pwd) dim oReply dim sHTMLReplyText dim sReplyText sHTMLReplyText = "<HTML><head><head/><body>" & vBNewLine & _ "Это письмо содержит файл JPG. Письмо предназначено для проверки почтового сервера. " & vBNewLine & _ "Если вы получили это письмо, то ваш почтовый сервер работает.<BR><BR>" & vBNewLine & _ "<a href=""https://internet-lab.ru"">internet-lab.ru</a><BR><BR>" & vBNewLine & _ "This email contains an JPG file. The email is intended for checking the mail server. " & vBNewLine & _ "If you receive this mail, then your mail server is working.<BR><BR>" & vBNewLine & _ "---------<BR><BR>" & vBNewLine & _ "</body></HTML>" sHTMLReplyText = StrConv(sHTMLReplyText,"UTF-8","ISO-8859-1") set oReply = CreateObject("hMailServer.Message") oReply.From = "Mail Test <mailtest@internet-lab.ru>" oReply.FromAddress = "mailtest@internet-lab.ru" oReply.HeaderValue("Return-Path")="mailtest@internet-lab.ru" oReply.HeaderValue("Reply-To")="noreply@nternet-lab.ru" oReply.Subject = "Mail test from internet-lab.ru" oReply.Attachments.Add ("C:\danger\keepcalm.jpg") oReply.AddRecipient oMessage.From,oMessage.FromAddress if oMessage.HasBodyType("text/HTML") then oReply.HTMLBody = sHTMLReplyText & oMessage.HTMLBody else oReply.HTMLBody = sHTMLReplyText & oMessage.Body end if oReply.Save End Sub Function StrConv(Text,SourceCharset,DestCharset) Set Stream=CreateObject("ADODB.Stream") Stream.Type=2 Stream.Mode=3 Stream.Open Stream.Charset=DestCharset Stream.WriteText Text Stream.Position=0 Stream.Charset=SourceCharset StrConv=Stream.ReadText End Function
Здесь:
- oApp — объект для hMailServer.Application, вынесен в глобальные для использования в других функциях
- user — администратор hMailServer, вынесен в глобальные для использования в других функциях
- pwd — пароль администратора hMailServer, вынесен в глобальные для использования в других функциях
- MailTestReply — функция автоответчика
- StrConvert — вспомогательная функция для конвертации текста, нужна для поддержки кириллицы
Функция MailTestReply создаёт HTML сообщение для ответа, прикрепляет вложение, кодирует текст для поддержки кириллицы. Дополнительно в письмо добавляется входящий текст. Сообщение отправляется тому, кто написал.
Настроим ящик mailtest@internet-lab.ru, Переключаемся на вкладку правила.
Добавляем новое правило, у меня уже добавлено, назвал его: "MailTest".
Добавляем критерий: "Тема сообщения Keep Calm and Reply". Т.е. правило будет срабатывать для всех сообщений с темой "Keep Calm and Reply". Это сделано в тестовых целях, критерии можете создать любые.
Добавляем действие "Выполнить скрипт".
Выполняем скрипт MailTestReply. Сохраняем изменения.
Проверка автоответчика
Работу автоответчика можно проверить, отправив письмо:
- На адрес: mailtest@internet-lab.ru
- С темой: Keep Calm and Reply
Если вы получите это письмо, то автоответчик работает.