Чтение почты с помощью Rmail – ЧАСТЬ 2

27.5  Rmail-файлы и входные почтовые ящики

Операционная система помещает приходящую вам почту в файл, который мы называем вашим входным почтовым ящиком. Когда вы запускаете Rmail, он выполняет написанную на Си программу movemail, чтобы скопировать новые сообщения из входного почтового ящика в первичный Rmail-файл, который также содержит другие сообщения, сохранившиеся от предыдущих сеансов Rmail.  Именно в этом файле находится та корреспонденция, которую вы читаете с помощью Rmail.  Эта процедура называется получением новой почты. В любой момент она может быть повторена в Rmail с помощью команды g.

Переменная  rmail-primary-inbox-list  содержит список имен файлов, являющихся входными почтовыми ящиками вашего первичного Rmail-файла. Если вы не установили эту переменную явно, она инициализируется  значением переменной среды MAIL, или, в крайнем случае, устанавливается в значение nil,  что означает использование входного почтового ящика по умолчанию; это могут быть файлы ‘/var/mail/имяпользователя’,

‘/usr/mail/имяпользователя’ или ‘/usr/spool/mail/имяпользователя’ в зависимости от вашей операционной системы.

Чтобы  узнать  значение по  умолчанию  для  вашей  системы,  используйте   C-h v rmail-primary-inbox hRETi.       Вы   можете   указать  входной  файл (или  файлы)  для любого Rmail-файла с помощью команды set-rmail-inbox-list;  смотрите  Раздел 27.6 [Rmail-файлы], с. 278.

Есть две причины для разделения Rmail-файлов и входных почтовых ящиков.

1.  Формат входных почтовых файлов изменяется от одной операционной системы к другой и зависит от других почтовых программ. Только одна часть Rmail должна знать об этих альтернативах и должна лишь понимать, как преобразовывать их все к собственному  формату Rmail.

2.  Обеспечение доступа в файл входного почтового ящика без возникновения опасности потери почты — очень громоздкая вещь, поскольку требует взаимных  блокировок с доставкой почты.  Кроме того, различные операционные системы используют разную технику  блокировок.  Стратегия перемещения  почты  из  входного  почтового ящика раз и навсегда в отдельный Rmail-файл устраняет  необходимость блокировки всего остального в Rmail, так как только Rmail работает с Rmail-файлом.

Rmail был написан с использованием Babyl в качестве внутреннего формата.   С тех пор мы поняли, что обычный для систем Unix и GNU формат входных почтовых ящиков подходит для этой цели, и мы планируем изменить Rmail,  чтобы он использовал  этот формат.   Однако, Rmail-файл все так  же  будет отдельным от входного файла,  даже  на системах, где их форматы одинаковы.

27.6  Множество почтовых файлов

По умолчанию Rmail действует в вашем первичном Rmail-файле, называемом ‘~/RMAIL’, и получает вашу приходящую почту  из системного входного почтового файла.  Но вы можете  также  иметь другие Rmail-файлы и редактировать их с помощью Rmail.   Эти файлы могут получать почту через их собственные файлы входных почтовых ящиков, или вы можете перемещать в них сообщения с помощью явных команд Rmail (см. Раздел 27.7 [Вывод из Rmail], с. 279).

i файл hRETi

Считать файл в Emacs и запустить в нем Rmail (rmail-input).

M-x set-rmail-inbox-list hRETфайлы hRETi

Задать имена входных почтовых файлов, откуда будет получать почту теку-

щий Rmail-файл.

g                Получить новую почту  из входных почтовых ящиков текущего Rmail-файла

(rmail-get-new-mail).

C-u g файл hRETi

Получить новую почту из входного почтового ящика файл.

Чтобы запустить Rmail для файла, отличного от вашего первичного почтового файла, можно использовать в Rmail команду i (rmail-input).  Она обращается к этому файлу в режиме Rmail. Вы также можете использовать команду M-x rmail-input, даже не находясь в Rmail.

Файл, считываемый с помощью команды i,  как  правило, должен быть правильным Rmail-файлом. Если это не так,  Rmail пытается преобразовать его в поток сообщений в нескольких известных форматах.  Если это удается, он преобразует весь этот файл в Rmail-файл. Если вы задали имя несуществующего  файла, i инициализирует новый буфер для создания нового Rmail-файла.

Вы также можете выбрать Rmail-файл из меню. Сначала выберите пункт  меню Classify, из меню Classify выберите пункт Input Rmail File; затем выберите нужный вам файл. Переменные rmail-secondary-file-directory и rmail-secondary-file-regexp указывают, какие файлы предлагает  это меню: первая переменная говорит, в каком каталоге их искать; вторая говорит, какие файлы в этом каталоге предлагать (все, чьи имена соответствуют регулярному выражению). Эти переменные также относятся к выбору файла для вывода (см. Раздел 27.7 [Вывод из Rmail], с. 279).

Каждый Rmail-файл может содержать список имен файлов входных почтовых ящиков; вы можете  задать этот  список с помощью M-x set-rmail-inbox-list hRETfiles hRETi. Аргумент может содержать любое число имен файлов, разделенных запятыми. Он может быть также пустым, и это означает, что этот файл не должен иметь входных почтовых ящиков. Как только указан список входных почтовых ящиков, Rmail-файл запоминает его и сохраняет до тех пор, пока он явно не будет изменен.

Как особое исключение,  если ваш первичный Rmail-файл не указывает входных почто-

вых файлов, он использует стандартный системный.

Команда g (rmail-get-new-mail) вносит почту в текущий Rmail-файл из его входных файлов. Если у этого Rmail-файла нет входных файлов, g ничего не делает. Команда M-x rmail также вносит новую почту в ваш первичный Rmail-файл.

Чтобы перенести почту из файла, не являющегося обычным входным почтовым ящиком, задайте ключу g числовой аргумент, как в C-u g. Тогда он считает имя файла и перенесет почту из него. Когда g используется с аргументом, файл входного почтового ящика ни в коем случае не удаляется  и не изменяется.  Поэтому это основной  способ переноса одного файла сообщений в другой.

27.7  Копирование сообщений в файлы

Эти команды копируют сообщения из Rmail-файла в другой файл.

o файл hRETi

Добавить копию текущего сообщения в конец файла, по умолчанию в формате

Rmail-файлов (rmail-output-to-rmail-file).

C-o файл hRETi

Добавить копию текущего сообщения в конец файла, по умолчанию в формате системных почтовых ящиков (rmail-output).

w файл  hRETi

Вывести только тело сообщения в файл, по умолчанию имя файла берется из поля ‘Subject’.

Команды o и C-o копируют  текущее  сообщение в указанный файл. Это может быть Rmail-файл или файл в формате системных почтовых ящиков; команды вывода выясняют формат этого файла и записывают копируемое сообщение в этом формате.

При копировании сообщения в файл в формате Unix, эти команды включают все поля заголовков, которые видимы в данный момент. Если хотите, используйте сначала команду t, чтобы указать, какие заголовки показывать (и копировать).

Команды o и C-o различаются с двух сторон: каждая предлагает свое имя файла по умолчанию и каждая задает свой выбор формата,  когда файл еще не  существует.  Команда o использует при создании нового файла формат Rmail, тогда как C-o использует для нового файла системный формат.  По умолчанию o использует имя файла, заданное последней o, а C-o — последней C-o.

Если к выходному Rmail-файлу в данный момент обращается какой-нибудь буфер, команды вывода копируют  сообщение в этот буфер. Нужно ли действительно сохранять буфер в его файл решаете вы.

Иногда вы можете  получить сообщение,  чье тело несет содержимое  файла. Вы можете  сохранить его тело в файл (исключая заголовки сообщения) с помощью команды w (rmail-output-body-to-file).  Часто эти сообщения содержат имя целевого файла в поле

‘Subject’, поэтому команда w использует это поле как имя выходного  файла по умолчанию. Однако, имя файла считывается  из минибуфера, поэтому при желании вы можете указать другое имя.

Вы также  можете  вывести сообщение  в Rmail-файл, выбранный из меню.  Сначала выберите пункт  меню Classify, из меню Classify выберите пункт  Output Rmail File; затем выберите нужный вам пункт  меню. Это выведет текущее сообщение в указанный файл, как команда o.  Переменные rmail-secondary-file-directory и rmail-secondary-fileregexp указывают, какие файлы предлагает это меню: первая переменная говорит в каком каталоге  их искать; вторая говорит,  какие файлы в этом каталоге  предлагать (все, чьи имена соответствуют регулярному выражению).

Копирование сообщения придает его исходной копии атрибут ‘filed’,  так  что когда такое сообщение становится текущим, в строке режима появляется слово ‘filed’. Если вы хотите хранить только одну копию каждого почтового сообщения, установите переменную rmail-delete-after-output равной t; тогда команды o и C-o после копирования удаляют оригинал.  (Впоследствии  вы можете  отменить удаление оригинального сообщения, если захотите.)

При копировании в файлы в системном формате почтовых ящиков используются поля заголовка, которые показаны в это время в Rmail.  Таким образом, если вы используете команду t для просмотра всего заголовка и затем скопируете сообщение, скопируется  весь заголовок. См. Раздел 27.13 [Отображение  сообщений], с. 286.

Переменная rmail-output-file-alist позволяет вам указать интеллектуальные значения по умолчанию для выходного файла, основанные на содержимом текущего сообщения. Ее значением должен быть список, чьи элементы имеют такую форму:

(regexp  . имя)

Если в текущем сообщении есть совпадение с regexp, то по умолчанию именем выходного файла будет имя. Если совпадения найдены для нескольких элементов, то имя файла по умолчанию определяется первым совпавшим элементом. Подвыражение имя может быть

константной строкой, дающей имя файла, или, в более общем случае,  любым лисповским выражением, возвращающим имя файла в виде строки.  rmail-output-file-alist относится как к o, так и к C-o.

27.8  Метки

У  каждого сообщения могут  быть различные метки, приписываемые ему в качестве средства классификации.  Метка имеет имя; разные имена означают разные метки. Любая данная метка либо присутствует, либо отсутствует в конкретном сообщении. Ряд имен меток имеют стандартные значения и присваиваются  сообщениям в Rmail автоматически в нужный момент; такие специальные метки называются атрибутами.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий