Продолжим анализ кода автоответчика. Итак, вначале проверяется, было ли имя рассматриваемого пользователя упомянуто в строке То:. Если его там нет, то это сообщение могло быть получено на имя пользователя, указанного в строке Сс:, или имя получателя сообщений списка рассылки.
Затем проверяется поле Precedence:. Если оно содержит слово “bulk”, то это сообщение могло быть отправлено в составе акции массовой почтовой рассылки. Если в поле Subject: содержатся строки “returned mail” или “bounced mail” или отправителем является сама почтовая система (что может быть обозначено по-разному, как “mailer daemon”, “mail subsystem” или “postmaster”), то, скорее всего, мы имеем дело с возвращенной почтой и не должны на нее отвечать, поскольку это может привести к возникновению цикла. В любом из этих случаев просто происходит обычный выход из сценария.
Строки 20,21. Формирование ответа. Для создания нового сообщения, инициализированного как ответ на первоначальное, вызывается метод reply () объекта почтового сообщения.
Строки 22-26. Добавление к тексту сообщения из файла .vacation. Метод reply(), создает текст тела сообщения, состоящий из первоначального сообщения, обозначенного как цитата и отмеченного отступом. Перед этим текстом записывается содержимое файла .vacation. Открывается файл .vacation, вызывается метод body() почтового сообщения для получения ссылки на массив строк тела сообщения, а затем используется метод unshift() для вставки содержимого файла .vacation перед телом сообщения. При желании можно заменить все тело сообщения.