Rmail -- это подсистема Emacs для чтения и размещения получаемой вами
почты. Rmail хранит почтовые сообщения в файлах, называемых
Rmail-файлами. Чтение сообщений в Rmail-файле осуществляется в
специальном основном режиме, режиме Rmail, который переопределяет
большинство букв для запуска команд управления почтой. Команда
rmail-mode
используется для входа в режим Rmail, она запускает
ловушку rmail-mode-hook
, как обычно; но не выполняйте эту команду
вручную, она не может делать ничего существенного, если этот буфер не
обращается к правильному Rmail-файлу.
При простейшем использовании Rmail, у вас есть один Rmail-файл
`~/RMAIL', в котором сохраняется вся ваша почта. Этот файл
называется первичным Rmail-файлом. Команда M-x rmail
считывает ваш первичный Rmail-файл, вставляет в него новую почту из
ваших входных файлов, отображает первое непрочитанное сообщение и
позволяет вам начать чтение. Переменная rmail-file-name
задает
имя первичного Rmail-файла.
Rmail использует сужение, чтобы скрыть из Rmail-файла все сообщения, кроме одного. Показанное сообщение называется текущим. Специальные команды режима Rmail могут осуществлять такие вещи, как удаление текущего сообщения, копирование его в другой файл, посылка ответа или перемещение к другому сообщению. Вы также можете создать несколько Rmail-файлов и использовать Rmail для обмена сообщениями между ними.
В пределах Rmail-файла сообщения расположены последовательно в порядке поступления; вы можете использовать другие способы сортировки. Сообщениям присваиваются последовательные целые числа в качестве их номеров сообщений. Номер текущего сообщения показывается в строке режима Rmail, за ним идет общее число сообщений в файле. Вы можете перейти на сообщение, задавая его номер с помощью ключа j (смотрите раздел Перемещение по сообщениям).
Следуя обычным правилам Emacs, изменения в Rmail-файле становятся
постоянными только после сохранения этого файла. Вы можете осуществить
это с помощью команды s (rmail-save
), которая также сперва
вычеркивает удаляемые сообщения из файла (смотрите раздел Удаление сообщений). Для записи файла без вычеркивания
следует использовать C-x C-s. Rmail также сохраняет Rmail-файл
при поступлении новой почты из входного почтового файла (смотрите раздел Rmail-файлы и входные почтовые ящики).
Выйти из Rmail можно с помощью q (rmail-quit
), при этом
Rmail-файл очищается и сохраняется, и происходит переход в другой буфер.
Но формально нет необходимости `выходить'. Если вы переключились из
Rmail к редактированию в других буферах и больше не возвращались
обратно, на самом деле вы вышли. (Команда Rmail b делает это для
вас.) Достаточно просто убедиться, что вы сохранили Rmail-файл (как и
любой другой измененный вами файл). Достаточно удобный способ сделать
это предоставляет команда C-x s (смотрите раздел Сохранение файлов).
Когда Rmail показывает сообщение, не помещающееся на экране, вам придется прокручивать это сообщение, чтобы прочитать оставшуюся часть. Вы могли бы сделать это с помощью C-v, M-v и M-<, но в Rmail прокруткой приходится пользоваться настолько часто, что ее команды заслуживают более простого набора.
scroll-up
).
scroll-down
).
rmail-beginning-of-message
).
Так как во время чтения сообщения наиболее частой процедурой является
прокрутка по целому экрану, Rmail делает SPC и DEL
синонимами C-v (scroll-up
) и M-v
(scroll-down
).
Команда . (rmail-begining-of-message
) прокручивает к
началу выбранного сообщения. Это не совсем то же, что и M-<:
во-первых, она не оставляет метку, а во-вторых, она переустанавливает
границы буфера до пределов текущего сообщения, если вы их изменили.
Самое основное, что вы можете сделать с сообщением -- прочитать его. В Rmail вы можете прочитать сообщение, сделав его текущим. Обычно при этом последовательно перемещаются по файлу, так как сообщения в нем расположены в порядке получения. При входе в Rmail вы попадаете на первое сообщение, которое никогда еще не было текущим (это первое сообщения, имеющее атрибут `unseen'; смотрите раздел Атрибуты в Rmail). Чтобы увидеть другие новые сообщения, двигайтесь вперед, для повторного просмотра старых двигайтесь назад.
rmail-next-undeleted-message
).
rmail-previous-undeleted-message
).
rmail-next-message
).
rmail-previous-message
).
rmail-show-message
).
rmail-last-message
).
rmail-first-message
).
rmail-search
).
n and p -- это обычный способ перемещения по сообщениям в
Rmail. Они перемещают по сообщениям последовательно, но пропускают
удаленные сообщения, что обычно вы и хотели бы делать. Эти команды
называются rmail-next-undeleted-message
и
rmail-previous-undeleted-message
. Если вы не хотите пропускать
удаленные сообщения, например, если вы хотите переместиться к сообщению,
чтобы отменить его удаление, используйте варианты M-n и M-p
(rmail-next-message
и rmail-previous-message
). Числовой
аргумент в любой из этих команд используется как счетчик повторов.
В Rmail вы можете задать числовой аргумент, набрав только цифру. При этом не требуется сначала набирать C-u.
Команда M-s (rmail-search
) -- это версия поиска для
Rmail. Обычная команда наращиваемого поиска C-s работает в Rmail,
но она осуществляет поиск только в пределах текущего сообщения. Цель
команды M-s -- поиск другого сообщения. Она считывает регулярное
выражение (смотрите раздел Синтаксис регулярных выражений) без наращивания и затем
осуществляет поиск совпадения, начиная с начала следующего сообщения.
Потом она выбирает сообщение, содержащее совпадение. Если regexp
пусто, M-s использует регулярное выражение, заданное при
предыдущем поиске.
Чтобы найти в файле другое сообщения в обратном направлении, задайте команде M-s отрицательный аргумент. В Rmail это можно сделать как - M-s.
Также возможен поиск сообщения по метке. Смотрите раздел Метки.
Для передвижения к сообщению, задаваемому абсолютным номером,
используйте команду j (rmail-show-message
) с номером
сообщения в качестве аргумента. Без аргумента, команда j выбирает
первое сообщение. < (rmail-first-message
) также выбирает
первое сообщение. Команда > (rmail-last-message
) выбирает
последнее.
Когда вам больше не нужно хранить какое-то сообщение, его можно удалить. При этом удаляемое сообщение метится как возможно игнорируемое и некоторые команды Rmail не будут замечать его присутствия, но тем не менее оно продолжает существовать в Rmail-файле и сохраняет свой номер.
Вычеркивание в Rmail-файле (или его очистка) действительно уничтожает удаленные сообщения. Остальные сообщения последовательно перенумеровываются. Вычеркивание -- это единственное действие, кроме разбора дайджеста (смотрите раздел Сообщения-дайджесты), которое изменяет номера сообщений.
rmail-delete-forward
).
rmail-delete-backward
).
rmail-undelete-previous-message
).
rmail-expunge
).
Существуют две команды Rmail для удаления сообщений. Обе они удаляют
текущее сообщение и выбирают другое. Команда d
(rmail-delete-forward
) переходит к следующему сообщению,
пропуская уже удаленные, в то время как C-d
(rmail-delete-backward
) передвигает к предыдущему неудаленному
сообщению. Если же нет неудаленного сообщения, к которому можно перейти
в указанном направлении, то текущим остается сообщение, которое было
только что удалено. Числовой аргумент меняет направление движения после
удаления.
Всякий раз, когда Rmail удаляет сообщение, он вызывает функции,
перечисленные в rmail-delete-message-hook
. Когда вызываются
функции этой ловушки, сообщение уже помечено как удаленное, но все еще
является текущим в этом буфере Rmail.
Для того чтобы все удаленные сообщения окончательно исчезли из
Rmail-файла, надо набрать x (rmail-expunge
). Пока это не
сделано, есть возможность отмены удаления сообщений. Команда
отмены удаления, u (rmail-undelete-previous-message
),
предназначена для отмены действия команды d в большинстве случаев.
Она отменяет удаление текущего сообщения, если оно было удалено. В
противном случае она двигается к предыдущему сообщению до тех пор, пока
не будет найдено удаленное сообщение, и производит отмену удаления этого
сообщения.
Обычно вы можете отменить действие d с помощью команды u, так как u передвигает назад и отменяет удаление сообщения, произведенное командой d. Но это не работает, когда d пропускает несколько уже удаленных сообщений, которые следуют за удаляемым сообщением; в этом случае команда u будет отменять удаление последнего сообщения из тех, что были пропущены. Не существует совершенного способа обойти эту проблему. Однако, повторяя команду u, можно в конце концов вернуться к сообщению, для которого вы собирались отменить удаление. Можно также добраться до этого сообщения с помощью команды M-p и затем набрать u.
Удаленное сообщение имеет атрибут `deleted', и как результат при удалении текущего сообщения в строке режима появляется слово `deleted'. На самом деле, удаление или отмена удаления сообщения --- это не более чем добавление или уничтожение этого атрибута. Смотрите раздел Атрибуты в 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 RET. Вы можете указать входной
файл (или файлы) для любого Rmail-файла с помощью команды
set-rmail-inbox-list
; смотрите раздел Множество почтовых файлов.
Есть две причины для разделения Rmail-файлов и входных почтовых ящиков.
Rmail был написан с использованием Babyl в качестве внутреннего формата. С тех пор мы поняли, что обычный для систем Unix и GNU формат входных почтовых ящиков подходит для этой цели, и мы планируем изменить Rmail, чтобы он использовал этот формат. Однако, Rmail-файл все так же будет отдельным от входного файла, даже на системах, где их форматы одинаковы.
По умолчанию Rmail действует в вашем первичном Rmail-файле, называемом `~/RMAIL', и получает вашу приходящую почту из системного входного почтового файла. Но вы можете также иметь другие Rmail-файлы и редактировать их с помощью Rmail. Эти файлы могут получать почту через их собственные файлы входных почтовых ящиков, или вы можете перемещать в них сообщения с помощью явных команд Rmail (смотрите раздел Копирование сообщений в файлы).
rmail-input
).
rmail-get-new-mail
).
Чтобы запустить 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
указывают, какие файлы предлагает это
меню: первая переменная говорит, в каком каталоге их искать; вторая
говорит, какие файлы в этом каталоге предлагать (все, чьи имена
соответствуют регулярному выражению). Эти переменные также относятся к
выбору файла для вывода (смотрите раздел Копирование сообщений в файлы).
Каждый Rmail-файл может содержать список имен файлов входных почтовых ящиков; вы можете задать этот список с помощью M-x set-rmail-inbox-list RET files RET. Аргумент может содержать любое число имен файлов, разделенных запятыми. Он может быть также пустым, и это означает, что этот файл не должен иметь входных почтовых ящиков. Как только указан список входных почтовых ящиков, Rmail-файл запоминает его и сохраняет до тех пор, пока он явно не будет изменен.
Как особое исключение, если ваш первичный Rmail-файл не указывает входных почтовых файлов, он использует стандартный системный.
Команда g (rmail-get-new-mail
) вносит почту в текущий
Rmail-файл из его входных файлов. Если у этого Rmail-файла нет входных
файлов, g ничего не делает. Команда M-x rmail также вносит
новую почту в ваш первичный Rmail-файл.
Чтобы перенести почту из файла, не являющегося обычным входным почтовым ящиком, задайте ключу g числовой аргумент, как в C-u g. Тогда он считает имя файла и перенесет почту из него. Когда g используется с аргументом, файл входного почтового ящика ни в коем случае не удаляется и не изменяется. Поэтому это основной способ переноса одного файла сообщений в другой.
Эти команды копируют сообщения из Rmail-файла в другой файл.
rmail-output-to-rmail-file
).
rmail-output
).
Команды 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-file-regexp
указывают, какие файлы предлагает это
меню: первая переменная говорит в каком каталоге их искать; вторая
говорит, какие файлы в этом каталоге предлагать (все, чьи имена
соответствуют регулярному выражению).
Копирование сообщения придает его исходной копии атрибут `filed',
так что когда такое сообщение становится текущим, в строке режима
появляется слово `filed'. Если вы хотите хранить только одну копию
каждого почтового сообщения, установите переменную
rmail-delete-after-output
равной t
; тогда команды o
и C-o после копирования удаляют оригинал. (Впоследствии вы можете
отменить удаление оригинального сообщения, если захотите.)
При копировании в файлы в системном формате почтовых ящиков используются поля заголовка, которые показаны в это время в Rmail. Таким образом, если вы используете команду t для просмотра всего заголовка и затем скопируете сообщение, скопируется весь заголовок. Смотрите раздел Отображение сообщений.
Переменная rmail-output-file-alist
позволяет вам указать
интеллектуальные значения по умолчанию для выходного файла, основанные
на содержимом текущего сообщения. Ее значением должен быть список, чьи
элементы имеют такую форму:
(regexp . имя)
Если в текущем сообщении есть совпадение с regexp, то по умолчанию
именем выходного файла будет имя. Если совпадения найдены для
нескольких элементов, то имя файла по умолчанию определяется первым
совпавшим элементом. Подвыражение имя может быть константной
строкой, дающей имя файла, или, в более общем случае, любым лисповским
выражением, возвращающим имя файла в виде строки.
rmail-output-file-alist
относится как к o, так и к
C-o.
У каждого сообщения могут быть различные метки, приписываемые ему в качестве средства классификации. Метка имеет имя; разные имена означают разные метки. Любая данная метка либо присутствует, либо отсутствует в конкретном сообщении. Ряд имен меток имеют стандартные значения и присваиваются сообщениям в Rmail автоматически в нужный момент; такие специальные метки называются атрибутами.
Все другие метки приписываются пользователем.
rmail-add-label
).
rmail-kill-label
).
rmail-next-labeled-message
).
rmail-previous-labeled-message
).
rmail-summary-by-labels
).
Команды a (rmail-add-label
) и k
(rmail-kill-label
) позволяют вам приписывать или удалять любую
метку из текущего сообщения. Если аргумент метка пустой, то это
означает приписывание или удаление той самой метки, которая была
приписана или удалена самой последней.
Как только вы присвоили сообщениям метки, чтобы классифицировать их так, как вам хочется, появляются два способа использования этих меток: в перемещении и в резюме.
Команда C-M-n метки RET
(rmail-next-labeled-message
) передвигает к следующему сообщению,
которое имеет одну из меток. Аргумент метки -- это одно
или несколько имен меток, разделенных запятыми. C-M-p
(rmail-previous-labeled-message
) -- аналогичная команда, но
передвигает назад к предыдущим сообщениям. Числовой аргумент в этих
командах работает как счетчик повторов.
Команда C-M-l метки RET
(rmail-summary-by-labels
) показывает резюме, содержащее только
сообщения, имеющие по крайней мере одну из описанного набора меток.
Аргумент метки -- это одно или более имен меток, разделенных
запятыми. Смотрите раздел Резюме, для получения
информации о резюме.
Если аргумент метки для C-M-n, C-M-p или C-M-l пустой, то это предполагает использование последнего набора меток, указанного для какой-либо из этих команд.
Некоторые метки, такие, как `deleted' и `filed', имеют встроенные значения и приписываются сообщениям или удаляются из них автоматически в соответствующее время; эти метки называются атрибутами. Ниже приводится список атрибутов Rmail.
rmail-reply
). Смотрите раздел Посылка ответов.
rmail-forward
). Смотрите раздел Посылка ответов.
Все другие метки приписываются или удаляются только пользователем и не имеют стандартного смысла.
Rmail имеет ряд команд, которые используют режим Mail для посылки исходящей корреспонденции. Смотрите раздел Посылка почты, для справок по использованию режима Mail, включая некоторые средства, предназначенные для работы с Rmail. А в этом разделе описываются специальные команды Rmail для входа в режим Mail. Следует отметить, что обычные команды для посылки почты, C-x m и C-x 4 m, применимы в режиме Rmail и работают точно так же, как обычно.
rmail-mail
).
rmail-continue
).
rmail-reply
).
rmail-forward
).
rmail-resend
).
rmail-retry-failure
).
Самая распространенная причина посылки сообщения во время пребывания в
Rmail -- это необходимость ответа на сообщение, которое вы читаете.
Чтобы сделать это, наберите r (rmail-reply
). Это вызовет
появление буфера `*mail*' в другом окне, что очень похоже на
C-x 4 m, но при этом заранее инициализируются поля заголовка
`Subject', `To', `CC' и `In-reply-To', основываясь
на сообщении, на которое формируется ответ. Полю `To'
присваивается имя отправителя этого сообщения, а в поле `CC'
помещаются имена всех остальных его получателей.
Вы можете предотвратить появление некоторых адресов в поле `CC',
используя переменную rmail-dont-reply-to-names
. Ее значением
должно быть регулярное выражение (в виде строки): все получатели, чьи
адреса совпадают с этим регулярным выражением, будут исключены из поля
`CC'. По умолчанию она соответствует вашему собственному имени и
любому имени, начинающемуся с `info-'. (Эти имена исключаются,
потому что есть соглашение об использовании их для больших списков
рассылки для широкой публикации анонсов.)
Чтобы полностью опустить поле `CC' в каком-то ответе, введите команду ответа с числовым аргументом: C-u r или 1 r.
После того, как буфер `*mail*' проинициализирован, редактирование и отправка почты идет как обычно (смотрите раздел Посылка почты). Если с вашей точки зрения ранее подготовленные поля заголовка неправильны, то их можно отредактировать. Вы также можете использовать команды режима Mail (смотрите раздел Режим Mail), включая C-c C-y, которая вставляет сообщение, на которое вы отвечаете. Вы можете вернуться в буфер Rmail, выбрать там другое сообщение, переключиться назад и вставить новое текущее сообщение.
Иногда сообщения не доходят по назначению. Почтовые программы обычно
возвращают вам это письмо, заключив его в сообщение об отказе.
Команда Rmail M-m (rmail-retry-failure
) подготавливает
этого же сообщение к повторной посылке: она создает буфер `*mail*'
с тем же телом и полями заголовка, какие были раньше. Если вы сразу
нажмете C-c C-c, вы пошлете сообщение точно таким же, каким оно
было в первый раз. Иначе, вы можете отредактировать его текст или
заголовки и затем отправить. Переменная
rmail-retry-ignored-headers
, в том же формате, что и
rmail-ignored-headers
(смотрите раздел Отображение сообщений), контролирует, какие заголовки будут удалены из сообщения об
отказе при попытке повторной отправки; по умолчанию она равна
nil
.
Еще одна достаточно частая причина отправки почты в Rmail заключается
в необходимости перенаправить текущее сообщение другим
пользователям. Команда f (rmail-forward
) облегчает это,
заранее инициализируя буфер `*mail*' текстом текущего сообщения и
указывая в поле `Subject', что это перенаправленное письмо. От вас
требуется только записать получателей и отправить. Когда вы
перенаправляете сообщение, адресаты получают его "от вас", а его
содержимым является оригинальное сообщение.
Перенаправленное сообщение заключается между двумя разделительными строками. Кроме этого, все строки в нем, начинающиеся с дефисов, изменяются добавлением `- ' в начало. Когда вы получаете перенаправленное сообщение, если оно содержит что-то кроме обычного текста -- исходный код программы, например -- вы можете счесть удобным проделать обратное преобразование. Вы можете сделать это, выбрав перенаправленное сообщение и напечатав M-x unforward-rmail-message. Эта команда извлекает оригинальное сообщение, удаляя вставленные строки `- ', и вставляет его в Rmail-файл как отдельное сообщение сразу после текущего.
Пересылка -- это вариант, похожий на перенаправление; разница в
том, что при пересылке письмо отправляется "от начального посылателя",
таким же, каким оно пришло к вам, но с добавлением полей заголовка
`Resent-from' и `Resent-to', чтобы обозначить, что оно исходит
от вас. Чтобы переслать сообщение в Rmail, используйте C-u f.
(f запускает rmail-forward
, которая запрограммирована так,
чтобы вызывать rmail-resend
, если вы задали числовой аргумент.)
Команда m (rmail-mail
) используется для начала
редактирования исходящего сообщения, которое не является ответом. Она
оставляет поля заголовка пустыми. Единственное отличие ее от C-x 4
m состоит в том, что она обеспечивает доступность буфера Rmail для
C-c C-y, так же, как это делает r. Таким образом, m
может быть использована для отправки ответа на сообщение или для
перенаправления; она может делать все, что делают команды r и
f.
Команда c (rmail-continue
) возобновляет редактирование
буфера `*mail*', чтобы вы могли завершить сообщение, которое уже
составляли, а также для изменения сообщения, которое вы отправили.
Если вы установите переменную rmail-mail-new-frame
в значение,
не равное nil
, то все команды Rmail для начала отправки сообщения
будут создавать для его редактирования новый фрейм. Этот фрейм
удаляется, когда вы отсылаете сообщение, или когда вы используете пункт
`Don't Send' в меню `Mail'.
Все команды Rmail для отправки сообщения используют тот метод составления, который вы выбрали (смотрите раздел Способы составления сообщений).
Резюме -- это буфер, который содержит по одной строке на сообщение и дает вам возможность обзора почты в Rmail-файле. В каждой такой строке показан номер сообщения, его отправитель, метки и тема. Почти все команды Rmail можно использовать также и в буфере резюме; они относятся к сообщению, описанному на текущей строке. Перемещение точки в буфере резюме выбирает другие сообщения, когда вы переходите к их строкам.
Каждый буфер резюме относится только к одному Rmail-файлу; если редактируется множество Rmail-файлов, то они имеют отдельные буферы резюме. Имя буфера резюме создается добавлением `-summary' в конец имени буфера Rmail. Как правило, в один и тот же момент показывается только один буфер резюме.
Ниже приводятся команды для создания резюме для текущего Rmail-файла. Если Rmail-файл имеет буфер резюме, изменения в этом файле (такие как удаление или вычеркивание сообщений и получение новой почты) автоматически обновляют резюме.
rmail-summary
).
rmail-summary-by-labels
).
rmail-summary-by-recipients
).
rmail-summary-by-topic
).
Команда h или C-M-h (rmail-summary
) заполняет буфер
резюме для текущего Rmail-файла перечнем всех сообщений из этого файла.
Потом она показывает и выбирает этот буфер резюме в другом окне.
C-M-l метки RET (rmail-summary-by-labels
)
делает частичное резюме, упоминающее только сообщения, которые имеют
одну или несколько меток. Метки должны содержать имена
меток, разделенные запятыми.
C-M-r получатели RET
(rmail-summary-by-recipients
) делает частичное резюме,
упоминающее только сообщения, которые имеют одного или нескольких
получателей. Аргумент получатели должен содержать почтовые
адреса, разделенные запятыми.
C-M-t тема RET (rmail-summary-by-topic
)
создает частичное резюме, упоминающее только сообщения, чьи поля
`Subject' имеют совпадения с регулярным выражением тема.
Следует отметить, что для любого Rmail-файла существует только один буфер резюме; создание резюме одного вида отменяет любое ранее сделанное резюме.
Переменная rmail-summary-window-size
говорит, сколько строк
должно использовать окно резюме. Переменная
rmail-summary-line-count-flag
указывает, должны ли строки резюме
содержать число, показывающее количество строк в сообщении.
Вы можете делать в буфере резюме Rmail практически все, что вы можете делать в самом буфере Rmail. На самом деле, если у вас есть буфер резюме, нет необходимости переключаться назад в буфер Rmail.
Вы можете выбирать и просматривать различные сообщения в буфере Rmail из буфера резюме просто перемещая в нем точку к разным строкам. Не играет роли, какую именно команду Emacs вы используете для перемещения точки; на какой строке окажется точка после команды, то сообщение и будет выбрано в буфере Rmail.
Почти все команды Rmail работают и в буфере резюме, также как и в буфере Rmail. А именно, d в буфере резюме удаляет текущее сообщение, u отменяет удаление, а x вычеркивает. o и C-o выводят текущее сообщение в файл; r позволяет написать ответ. Вы можете прокручивать текущее сообщение, оставаясь в буфере резюме, с помощью SPC и DEL.
Команды Rmail для передвижения по сообщениям работают также и в буфере резюме, но с особенностью: они перемещают по тем сообщениям, которые перечислены в резюме. Они также убеждаются, что буфер Rmail появляется на экране (в отличие от команд движения курсора, которые обновляют содержимое буфера Rmail, но не показывают его в окне, если он уже не виден). Вот перечень этих команд:
Удаление, отмена удаления, получение новой почты и даже выбор другого
сообщения -- все обновляют буфер резюме, когда вы делаете эти операции
в буфере Rmail. Если переменная rmail-redisplay-summary
не равна
nil
, эти действия также возвращают буфер резюме на экран.
Когда вы завершили использование резюме, наберите Q
(rmail-summary-wipe
), чтобы удалить окно буфера резюме. Вы также
можете выйти из Rmail, находясь в буфере резюме: q
(rmail-summary-quit
) удаляет окно резюме, а затем выходит из
Rmail, записывая Rmail-файл и переключая в другой буфер.
Команды Rmail для сортировки производят устойчивую сортировку:
если нет причины предпочитать одно из двух сообщений, их порядок не
изменяется. Вы можете использовать это для сортировки по нескольким
критериям. Например, если вы применили rmail-sort-by-date
и
затем rmail-sort-by-author
, сообщения от одного автора появятся в
порядке возрастания даты.
С числовым аргументом, все эти команды изменяют порядок сравнения на противоположный. Это означает, что они сортируют сообщения от новых к старым, от больших в меньшим или в обратном алфавитном порядке.
Rmail переформатирует заголовок каждого сообщения перед его показом.
При этом удаляются неинтересные поля заголовков, чтобы уменьшить
беспорядок. Чтобы посмотреть заголовок целиком или повторить операцию
переформатирования, вы можете использовать команду t
(rmail-toggle-headers
).
rmail-toggle-header
).
При переформатировании удаляются большинство полей заголовка,
поскольку они не представляют интереса. Переменная
rmail-ignored-headers
содержит регулярное выражение, указывающее
какие поля надо скрывать таким способом -- если оно соответствует
началу поля, то это поле скрывается.
Rmail сохраняет полные исходные заголовки перед переформатированием;
чтобы посмотреть их, используйте команду t
(rmail-toggle-headers
). Она сбрасывает переформатированные
заголовки текущего сообщения и показывает его с исходными заголовками.
Повтор команды t снова переформатирует сообщение. Повторный выбор
сообщения тоже приводит к переформатированию.
Одно из последствий этого состоит в том, что если вы редактировали переформатированный заголовок (с помощью e; смотрите раздел Редактирование внутри сообщения), последующее использование t сбросит ваши изменения. С другой стороны, если вы использовали e после t, чтобы редактировать первоначальный (не переформатированный) заголовок, эти изменения останутся.
Когда команде t дан префиксный аргумент, положительный аргумент обозначает показ переформатированного заголовка, а нулевой или отрицательный -- полного.
При использовании в оконной системе, которая поддерживает несколько
шрифтов, Rmail подсвечивает некоторые поля заголовка, которые особенно
интересны -- по умолчанию это поля `From' и `Subject'.
Переменная rmail-highlighted-headers
хранит регулярное выражение,
задающее поля заголовка, которые нужно подсвечивать; если оно
соответствует началу поля, все это поле подсвечивается.
Если вы зададите необычные цвета для текста и фона, то цвета,
используемые для подсветки, могут с ними плохо смотреться. В таком
случае задайте другие цвета для начертания highlight
. Это стоит
сделать, потому что начертание highlight
используется и других
видах выделения. Смотрите раздел Использование разных начертаний, чтобы узнать, как это сделать.
Чтобы полностью выключить подсветку в Rmail, установите
rmail-highlighted-headers
равной nil
.
Большинство обычных команд Emacs доступны в режиме Rmail, хотя некоторые, такие как C-M-n и C-M-h, переопределяются в Rmail для других целей. Однако обычно буфер Rmail предназначен только для чтения, и большинство букв переопределены как команды Rmail. Если вы хотите отредактировать текст сообщения, вы должны использовать команду Rmail e.
Команда e (rmail-edit-current-message
) переключает из
режима Rmail в режим Rmail Edit, другой основной режим, практически
эквивалентный режиму Text. Это изменение отображается в строке режима.
В режиме Rmail Edit буквы вставляют себя как обычно, а команды Rmail недоступны. Когда вы закончите редактирование сообщения и будете готовы вернуться в Rmail, наберите команду C-c C-c, которая переключит вас назад в режим Rmail. С другой стороны, можно вернуться в режим Rmail, но отменить все сделанные изменения, набрав C-c C-].
Вход в режим Rmail Edit вызывает ловушку text-mode-hook
, а
затем ловушку rmail-edit-mode-hook
(смотрите раздел Ловушки). При этом в
сообщению присваивается атрибут `edited'. Она также показывает
полный заголовок сообщения, так что вы можете редактировать как тело,
так и заголовки сообщения, и ваши изменения в заголовках останутся
навсегда.
Сообщение-дайджест -- это сообщение, которое создано для передачи нескольких других сообщений. Дайджесты используются в некоторых списках рассылки с ведущим; все сообщения, которые пришли для рассылки в течение какого-то периода времени, например одного дня, помещаются в единый дайджест, который затем рассылается подписчикам. Пересылка одного такого дайджеста занимает гораздо меньше машинного времени, чем пересылка отдельных сообщений, хоть и при одинаковом общем объеме, поскольку затраты ресурсов на одно сообщение при передаче почты по сети довольно значительны.
При получении сообщения-дайджеста наиболее удобным способом для его прочтения является разброшюровка: обратное разделение его на несколько отдельных сообщений. После этого можно читать и удалять отдельные сообщения как вам угодно.
Чтобы сделать это, необходимо выбрать сообщение-дайджест и затем набрать команду M-x undigestify-rmail-message. Она извлекает каждое подсообщение как отдельное сообщение Rmail и вставляет их вслед за дайджестом. Само сообщение-дайджест помечается как удаленное.
Команда M-x unrmail преобразует файл в формате Rmail в формат входных почтовых ящиков (также известный как системный почтовый формат), чтобы вы могли использовать его с другими программами для редактирования почты. Вы должны указать два аргумента, имя Rmail-файла и имя для преобразованного файла. M-x unrmail не изменяет сам Rmail-файл.
Сообщения из списков рассылки, которые могут оскорбить некоторых читателей, иногда кодируются простым методом, называемым rot13 --- потому что он сдвигает алфавит на 13 букв. Этот код служит не для секретности, он не предоставляет ее; скорее, он позволяет тем, кто может быть оскорблен, избежать возможности даже увидеть настоящий текст сообщения.
Чтобы просмотреть буфер, использующий код rot13, запустите команду M-x rot13-other-window. Она показывает текущий буфер в другом окне, применяя код при отображении текста.
movemail
и POP
При получении новой почты Rmail сначала копирует ее из входного файла
в Rmail-файл; затем он записывает Rmail-файл; затем усекает входной
файл. Таким образом, сбой в системе может вызвать дублирование почты во
входном файле и в Rmail-файле, но не может вызвать потери. Если
rmail-preserve-inbox
не равна nil
, то Rmail будет
копировать новую почту из входного файла в Rmail-файл, не усекая входной
файл. Вы можете сделать такую установку, например, на портативном
компьютере, который вы используете для проверки почты через POP во время
путешествий, чтобы ваша почта оставалась на сервере, и вы могли
сохранить ее позднее на своей рабочей станции.
В некоторых случаях Rmail копирует новую почту из входного файла не
прямым путем. Сначала он запускает программу movemail
, чтобы
переместить почту из входного файла в промежуточный файл, называемый
`~/.newmail-входной-файл'. Затем Rmail вносит новую почту из
этого файла, сохраняет Rmail-файл и только затем удаляет промежуточный
файл. Если в неподходящий момент случится фатальный сбой, этот файл
останется на месте, и Rmail будет использовать его в следующий раз при
получении новой почты из этого входного файла.
Если Rmail по какой-то причине не может преобразовать данные из файла `~/.newmail-входной-файл' в формат Babyl, он переименовывает его в `~/RMAILOSE.n' (n -- это целое число, выбранное так, чтобы оно было уникальным), так что Rmail не будет иметь проблем с этими данными снова. Вам стоит просмотреть этот файл, найти сообщение, которое сбивает с толку Rmail (вероятно, оно содержит знак control-подчерк, восьмеричный код 037), и удалить его. Тогда вы можете использовать 1 g, чтобы получить почту из исправленного файла.
Некоторые системы используют для доступа к данным почтовых ящиков
пользователей метод, называемый POP, вместо записи этих данных в
почтовые файлы. movemail
может работать с POP, если вы
скомпилировали ее с определенным макросом MAIL_USE_POP
. (Вы
можете получить это, задав ключ `--with-pop', когда запускаете
configure
во время установки Emacs.) movemail
работает только с POP3, но не с более ранними версиями POP.
В предположении, что вы правильно скомпилировали и установили
movemail
, вы можете указать входной почтовый ящик POP, написав
"имя файла" в форме `po:имя-пользователя' в списке входных
почтовых ящиков Rmail-файла. movemail
обрабатывает такие
имена путем установки соединения с POP-сервером. Переменная среды
`MAILHOST' задает машину, на которой будет производиться поиск
сервера.
Для доступа к почте через POP может потребоваться пароль. Если
переменная rmail-pop-password
отлична от nil
, то она
задает пароль для использования с POP. Иначе, если
rmail-pop-password-required
не равна nil
, то Rmail
спрашивает пароль у вас.
Если вам нужно передать movemail
дополнительные флаги
командной строки, установите переменную rmail-movemail-flags
равной списку желаемых флагов. Не используйте эту переменную для
передачи флага -p
, который предотвращает затирание содержимого
входного файла; пользуйтесь вместо этого переменной
rmail-preserve-inbox
.
Установленная в вашей системе программа movemail
может
поддерживать аутенфикацию Kerberos. Если она поддерживается, то это
будет использоваться по умолчанию всегда, когда вы будете пытаться
получить почту через POP при неустановленных rmail-pop-password
и
rmail-pop-password-required
.
Некоторые POP-серверы хранят сообщения в обратном порядке. Если ваш
сервер делает так, а вам хотелось бы читать почту в том порядке, в каком
она поступала, вы можете велеть movemail
перевернуть
очередность загружаемых сообщений, добавив к rmail-movemail-flags
флаг -r
.