Автоматизация рутины в OS X. Урок 4. Простейший парсинг почтового ящика
В предыдущей статье мы научились использовать JavaScript для автоматизации рассылки писем в приложении Mail. Сегодня мы разберем простейший пример парсинга входящей почты.
Что мы хотим сделать?
Собрать все письма от одного отправителя и сохранить их в единый текстовый файл.
Куда писать код?
- Открыть программу «Редактор скриптов» (Программы -> Утилиты).
- В верхнем меню выбрать Файл ->Новый.
3. На переключателе языков выбрать JavaScript.
Как записать содержимое письма в файл?
Для начала напишем простенький скрипт, который считывает содержимого последнего входящего письма и записывает его в только что открытый в программе TextEdit текстовый файл:
//Создаем переменные для приложения "Mail" и "TextEdit" var Mail = Application("Mail"); var textEdit = Application("TextEdit"); //Создаем новый документ в программе TextEdit var newDoc = textEdit.Document().make(); //Кладем в переменную текст первого письма из почтового ящика var content = Mail.inbox.messages[0].content(); //Записываем текст письма в файл newDoc.text = content;
Если бы мы хотели считывать содержимое исходящих писем, то inbox следовало бы заменить на sentMailbox:
var content = content +"\n" + Mail.sentMailbox.messages[i].content();
Как записать содержимое нескольких писем в файл?
Скопировать в текстовой файл одно письмо можно и руками. А весь смысл автоматизации в том, чтобы повторить эту операцию неограниченное количество раз. Посмотрим, как это можно сделать:
//Создаем переменные для приложения "Mail" и "TextEdit" var Mail = Application("Mail"); var textEdit = Application("TextEdit"); //Создаем новый документ в программе TextEdit var newDoc = textEdit.Document().make(); //Запускаем цикл из 10 итераций for (i=1;i<=10;i++) { //В каждую итерация добавляем к переменной текст письма с соответствующим номером var content = content +"\n" + Mail.inbox.messages[i].content(); } //Записываем текст всех писем в файл newDoc.text = content;
Символ «\n» обозначает перенос строки.
Как копировать текст писем только от определенного отправителя?
Просто собирать все письма в один файл тоже не особо полезное дело. Разберемся как считывать только письма посланные с конкректного адреса:
//Создаем переменные для приложения "Mail" и "TextEdit" var Mail = Application("Mail"); var textEdit = Application("TextEdit"); //Создаем новый документ в программе TextEdit var newDoc = textEdit.Document().make(); //Запускаем цикл из 20 итераций for (i=1;i<=20;i++) { //Определям отправителя текущего письма var sender = Mail.inbox.messages[i].sender(); //Если отправитель правильный - добавляем к переменной content текст письма с соответствующим номером if (sender == "Ирина Чернова <irairache@gmail.com>") { var content = content +"\n" + Mail.inbox.messages[i].content(); } } //Вставлем текст писем в документ newDoc.text = content;
По каким еще критериям можно фильтровать письма?
Таким же образом можно собирать письма датированные определенным числом, непрочитанные письма и пересписку объединенную одной темой. Для этого надо вместо свойства sender вызвать одно их нижеприведенных:
- date received — дата получения;
- date sent — дата отправки;
- read status — прочитано ли сообщение;
- subject — тема письма.
Полная справочная информация о классах, объектах и методах доступна в меню Окно -> Библиотека редактора скриптов.
Предыдущие публикации из цикла «Автоматизация рутины в OS X» вы можете найти по следующим ссылкам:
- Автоматизация рутины в OS X. Урок 1. Пакетная обработка изображений
- Автоматизация рутины в OS X. Урок 2. Генерация слайдов для презентаций
- Автоматизация рутины в OS X. Урок 3. Рассылаем спам
Это должен знать каждый:
✅ Подписывайтесь на нас в Telegram, ВКонтакте, и Яндекс.Дзен.