compose-mail
).
compose-mail-other-window
).
compose-mail-other-frame
).
mail-send
).
mail-send-and-exit
).
Команда C-x m (compose-mail
) выбирает буфер с именем
`*mail*' и инициализирует его наброском исходящего сообщения.
C-x 4 m (compose-mail-other-window
) выбирает буфер
`*mail*' в другом окне, оставляя предыдущий текущий буфер видимым.
C-x 5 m (compose-mail-other-frame
) создает для буфера
`*mail*' новый фрейм.
Поскольку буфер сообщения -- это обычный буфер Emacs, во время составления письма вы можете переключаться в другие буферы и вернуться обратно позднее (или вообще не возвращаться). Если вы используете команду C-x m снова, когда вы составляли другое сообщение, но еще не послали его, от вас потребуют подтверждение, перед тем как удалить старое сообщение. Если вы ответите n, буфер `*mail*' останется выбранным со своим старым содержимым, так что вы сможете закончить прежнее сообщение и послать его. C-u C-x m -- это другой способ сделать то же самое. Пересылка сообщения помечает буфер `*mail*' как "немодифицированный", что устраняет необходимость подтверждения при следующем использовании C-x m.
Если вы составляете сообщение в буфере `*mail*' и хотите послать еще одно сообщение до завершения первого, переименуйте буфер `*mail*' с помощью M-x rename-uniquely (смотрите раздел Разнообразные операции над буфером). Затем вы можете использовать C-x m или ее варианты, описанные выше, чтобы создать новый буфер `*mail*'. Если вы сделаете так, то сможете работать с каждым буфером с сообщением независимо.
Кроме текста, или тела, сообщение имеет поля заголовка, которые говорят, кто послал его, когда, кому, зачем и так далее. Некоторые поля заголовка, такие как `Date' (дата) и `Sender' (отправитель), создаются автоматически, когда вы посылаете сообщение. Другие же, например имена получателей, должны быть заданы вами, чтобы сообщение было отослано правильно.
Режим Mail предусматривает несколько команд, помогающих вам отредактировать некоторые поля заголовка, и некоторые поля в этом буфере иногда инициализируются автоматически. Вы можете вставить или отредактировать любые поля заголовка, используя обычные команды редактирования.
Строка в буфере, которая гласит
--text follows this line--
--- это специальный ограничитель, отделяющий заданные вами заголовки от
самого текста. Все, что следует за этой строкой, -- это текст
сообщения, а заголовки предшествуют ей. Сама разделяющая строка не
появляется в реальном посылаемом сообщении. Используемый для
строки-ограничителя текст задается переменной
mail-header-separator
.
Здесь представлен пример того, как могут выглядеть заголовки и текст в буфере сообщения.
To: [email protected] CC: [email protected], [email protected] Subject: The Emacs Manual --Text follows this line-- Please ignore this message.
Каждое поле заголовка в буфере сообщения начинается с имени это поля, оно пишется в начале строки и отделяется двоеточием. Прописные и строчные буквы в именах полей не различаются (и в почтовых адресах тоже). После двоеточия и необязательного пропуска пишется содержимое этого поля.
Вы можете использовать для полей заголовка любые имена, какие вам нравятся, но обычно люди используют только стандартные имена с принятыми значениями. Ниже приведена таблица часто используемых в посылаемых сообщениях полей.
mail-self-blind
равной t
.
mail-archive-file-name
равной имени этого
файла. Если вы не удалите поле `FCC' перед посылкой, сообщение
будет записано в этот файл.
user-mail-address
в качестве значения
по умолчанию.
mail-default-reply-to
равной
этом адресу (в виде строки). Тогда mail
инициализирует сообщения
с заданным адресом `Reply-to'. Вы можете удалить или изменить это
поле заголовка перед отправкой сообщения, если хотите. Когда Emacs
начинает работу, mail-default-reply-to
инициализируется по
переменной среды `REPLYTO', если она установлена.
Поля заголовка `To', `CC', `BCC' и `FCC' могут использоваться любое число раз, и каждое из этих полей может содержать несколько адресов, разделенных запятыми. Поля `To', `CC' или `BCC' могут также иметь строки продолжения: одна или несколько строк, начинающиеся с пробельных знаков и следующие за строкой, на которой начинается поле, рассматриваются как часть этого поля. Вот пример поля `To' со строкой продолжения:
To: [email protected], [email protected], [email protected]
При посылке сообщения, если вы не написали поле `From' сами,
Emacs сделает это за вас. Формат этого поля управляется переменной
mail-from-style
:
nil
parens
angles
system-default
Вы можете определить почтовые псевдонимы в файле с именем `~/.mailrc'. Это короткие мнемонические имена, обозначающие почтовые адреса или группы адресов. Подобно многим другим почтовым программам, Emacs раскрывает псевдонимы, когда они появляются в полях `To', `From', `CC', `BCC' и `Reply-to' и в их вариантах с `Resent-'.
Чтобы определить псевдоним в `~/.mailrc', напишите одну строку в таком формате:
alias короткий-адрес полные-адреса
Здесь полные-адреса означает один или более почтовых адресов, в которые раскрывается короткий-адрес. Разделяйте адреса пробелами; если адрес содержит пробел, заключайте весь адрес в двойные кавычки.
Например, чтобы сделать так, чтобы maingnu
обозначало ваш
собственный местный адрес и [email protected]
, поместите такую строку:
alias maingnu [email protected] local-gnu
Emacs также распознает в файлах `.mailrc' команды включения. Они выглядят так:
source имя-файла
Файл `~/.mailrc' в основном используется другими программами для чтения почты; он может содержать различные другие команды. Emacs игнорирует все, кроме определений псевдонимов и команд включения.
Есть другой способ определить почтовый псевдоним, но только внутри
Emacs -- с помощью команды define-mail-alias
. Она запрашивает
псевдоним и затем полный адрес. Вы можете использовать ее для
определения псевдонимов в вашем файле `.emacs', следующим образом:
(define-mail-alias "maingnu" "[email protected]")
define-mail-alias
записывает псевдонимы, добавляя их к
переменной, называемой mail-aliases
. Если вы умеете обращаться
со списками в Лиспе, вы можете установить mail-aliases
напрямую.
Первоначальное значение переменной mail-aliases
равно t
,
что означает, что для получения правильного значения Emacs должен
считать `.mailrc'.
Вы можете задать вместо `~/.mailrc' файл с другим именем,
установив переменную mail-personal-alias-file
.
Обычно Emacs раскрывает псевдонимы, когда вы отсылаете сообщение. Вам не обязательно раскрывать псевдонимы до отсылки сообщения, но вы можете раскрыть их, если хотите увидеть, куда пойдет это письмо. Чтобы сделать это, используйте команду M-x expand-mail-aliases; она раскрывает все почтовые псевдонимы, присутствующие в данный момент в полях заголовка с адресами.
Если хотите, вы можете сделать так, чтобы почтовые псевдонимы раскрывались как сокращения, по мере того как вы их набираете (смотрите раздел Сокращения). Чтобы включить эту возможность, выполните следующее:
(add-hook 'mail-setup-hook 'mail-abbrevs-setup)
Это можно написать в файле `.emacs'. Смотрите раздел Ловушки. Если вы
пользуетесь этим методом, вы должны использовать
define-mail-abbrev
, а не define-mail-alias
; последняя
команда не работает с этим пакетом. Обратите внимание, пакет для
сокращений почтовых адресов использует переменную mail-abbrevs
вместо mail-aliases
, и все псевдонимы преобразуются к нижнему
регистру.
Пакет для сокращений почтовых адресов также предоставляет команду
C-c C-a (mail-interactive-insert-alias
), которая считывает
псевдоним (с завершением) и вставляет его определение в точке. Это
полезно при редактировании самого текста сообщения или поля вроде
`Subject', где Emacs обычно не раскрывает псевдонимы.
Заметьте, что сокращения раскрываются, только если вы после вставили разделитель слов. Однако, вы можете перепривязать C-n и M-> так, чтобы они еще и производили раскрытие. Это можно сделать следующим образом:
(add-hook 'mail-setup-hook '(lambda () (substitute-key-definition 'next-line 'mail-abbrev-next-line mail-mode-map global-map) (substitute-key-definition 'end-of-buffer 'mail-abbrev-end-of-buffer mail-mode-map global-map)))
Основной режим, используемый в буфере сообщения -- это режим Mail, который очень похож на режим Text за исключением того, что в нем предоставляются различные специальные команды на префиксе C-c. Все эти команды должны производить различные операции с редактируемым или посылаемым сообщением. Кроме того, режим Mail определяет знак `%' как разделитель слов; это полезно при использовании команд, работающих со словами, для редактирования почтовых адресов.
Режим Mail обычно используется в буферах, автоматически подготовленных
командой mail
или родственными командами. Однако, вы можете
также переключиться в режим Mail в буфере, обращающемся к файлу. Это
полезно делать, если вы сохранили в файле черновик сообщения.
В режиме Mail есть две команды для отправки сообщения, которое вы редактировали:
mail-send
).
mail-send-and-exit
).
C-c C-s (mail-send
) отсылает сообщение и помечает буфер с
этим сообщением как немодифицированный, но при этом оставляет этот буфер
выбранным, так что вы можете изменить это сообщение (возможно с новыми
получателями) и послать его снова.
C-c C-c (mail-send-and-exit
) отсылает сообщение, а затем
удаляет окно или переключает в другой буфер. Эта команда устанавливает
для буфера с сообщением самый низкий приоритет для повторного выбора,
так как вы перестали его использовать. Это обычный способ отправки
сообщения.
В буфере, который обращается к файлу, отправка сообщения не сбрасывает флаг измененности, так как это должно делать только сохранение файла. В результате вы не получаете предупреждения, если пытаетесь отправить одно сообщение два раза.
Когда вы отправляете сообщение, которое содержит знаки, не входящие в
ASCII, эти знаки необходимо перевести в какую-то систему кодирования
(смотрите раздел Системы кодирования). Обычно она устанавливается вашей
языковой средой (смотрите раздел Языковые среды). Вы можете явно указать
систему кодирования для исходящей почты, устанавливая переменную
sendmail-coding-system
.
Если определяемая таким образом система кодирования не может обработать знаки в каком-то сообщении, Emacs просит вас выбрать систему кодирования самим, показывая список возможных вариантов.
Режим Mail предоставляет специальные команды для передвижения к определенным полям заголовка и для завершения адресов.
mail-to
).
mail-subject
).
mail-cc
).
mail-bcc
).
mail-fcc
).
mail-complete
).
Есть пять команд для перемещения точки к отдельным полям заголовка, и все они базируются на префиксе C-c C-f (`C-f' означает "field".(10) Они перечислены в таблице выше. Если требуемое поле не существует, эти команды создают его. Мы предоставляем специальные команды для перемещения именно к таким полям, потому что чаще всего пользователи хотят редактировать именно их.
При редактировании полей заголовка, которые содержат почтовые адреса,
таких как `To:', `CC:' и `BCC:', вы можете завершить
адрес, введя M-TAB (mail-complete
). Эта команда
вставляет полное имя, соответствующее этому адресу, если она может его
определить. Переменная mail-complete-style
говорит, нужно ли
вставлять полное имя и какой стиль следует использовать; стиль задается
как в mail-from-style
(смотрите раздел Поля заголовка сообщения).
При завершении правильными почтовыми адресами считаются имена локальных пользователей и определенные вами почтовые псевдонимы. Вы можете задать дополнительные источники правильных адресов; используйте буфер настройки, чтобы просмотреть возможные варианты.
Если вы напечатаете M-TAB в теле сообщения, она вызовет
ispell-complete-word
, как в режиме Text.
В режиме Mail также есть команды для восстановления или цитирования всего или части сообщения, на которое вы отвечаете. Эти команды активны, только когда вы начали отправку сообщения с использованием команды Rmail.
mail-yank-original
).
mail-yank-region
).
mail-fill-yanked-message
).
Если отправка почты запускается из программы чтения почты Rmail с использованием команды Rmail, то внутри буфера сообщения может использоваться команда C-c C-y для вставки текста сообщения, на которое вы отвечаете. Обычно она сдвигает каждую строку этого сообщения на три пробела и удаляет большинство полей заголовка. Числовой аргумент указывает количество пробелов для отступа. Просто C-u говорит о том, что делать отступ и удалять что-либо не надо. C-c C-y всегда использует текущее сообщение из буфера Rmail, так что можно вставить несколько старых сообщений, выбирая нужное в Rmail, переключаясь в `*mail*' и восстанавливая его, а затем снова переключаясь в Rmail, чтобы выбрать еще одно.
Вы можете задать текст, который команда C-c C-y будет вставлять
в начале каждой строки: установите mail-yank-prefix
равной
желаемой строке. (Значение nil
означает, что следует делать
отступ; это используется по умолчанию.) Однако, C-u C-c C-y
никогда не добавляет ничего в начало вставляемых строк, несмотря на
значение mail-yank-prefix
.
Чтобы вставить только часть пришедшего сообщения, установите в Rmail
область вокруг нужного фрагмента; затем перейдите в буфер `*mail*'
и напечатайте C-c C-r (mail-yank-region
). В каждой
копируемой строке делается отступ или добавляется префикс в соответствии
с mail-yank-prefix
.
После использования C-c C-y или C-c C-r вы можете набрать C-c C-q, чтобы заполнить абзацы восстановленного старого сообщения или сообщений. Однократным использованием C-c C-q заполняются все такие абзацы, причем каждый отдельно. Чтобы заполнить один абзац процитированного сообщения, используйте M-q. Если заполнение не обрабатывает используемый вами стиль префикса для цитат автоматически, попробуйте установить префикс заполнения явно. Смотрите раздел Заполнение текста.
mail-text
).
mail-signature
).
mail-attach-file
).
C-c C-t (mail-text
) перемещает точку к позиции сразу
после строки-разделителя заголовка, то есть к началу текста тела
сообщения.
C-c C-w (mail-signature
) добавляет в конец сообщения
стандартный кусок текста, где вы можете подробнее рассказать с себе.
Этот текст берется из файла `~/.signature' в вашем начальном
каталоге. Чтобы подпись вставлялась автоматически, установите
переменную mail-signature
в значение t
; тогда при создании
почтового сообщения содержимое вашего файла `~/.signature' будет
вставляться автоматически. Если вы не хотите ставить подпись в
конкретном сообщении, удалите ее из буфера перед отсылкой.
Вы также можете установить mail-signature
равной строке; тогда
эта строка автоматически вставляется в качестве вашей подписи, когда вы
начинаете редактировать сообщение. Если вы установите ее равной
какому-то другому лисповскому выражению, это выражение всякий раз
вычисляется, а его значение (которое должно быть строкой) определяет
подпись.
Вы можете проверить орфографию в тексте написанного сообщения с
помощью команды M-x ispell-message. Если вы восстанавливали
пришедшие сообщения в набросок отправляемого, эта команда пропускает
восстановленные места, но проверяет текст, который вставили вы сами.
(Она просматривает величину отступа или значение переменной
mail-yank-prefix
, чтобы отличить процитированные строки от
введенных вами.) Смотрите раздел Поиск и исправление орфографических ошибок.
Чтобы включить в отправляемое сообщение файл, вы можете использовать
C-x i, обычную команду для вставки файла в текущий буфер. Но чаще
удобнее использовать особую команду, C-c C-i
(mail-attach-file
). Эта команда вставляет содержимое заданного
файла в конец буфера после подписи, если она есть, с разделяющей
строкой, включающей имя этого файла.
Включение режима Mail (что C-x m делает автоматически) запускает
обычные ловушки text-mode-hook
и mail-mode-hook
.
Инициализация нового исходящего сообщения запускает обычную ловушку
mail-setup-hook
; используйте эту ловушку, если вы хотите добавить
к вашему почтовому заголовку особые поля или сделать другие изменения в
представлении буфера сообщения. Смотрите раздел Ловушки.
Основное различие между этими ловушками состоит только в том, в какое
время они вызываются. Когда вы набираете M-x mail, запускается
mail-mode-hook
, как только будет создан буфер `*mail*'.
Затем функция mail-setup
помещает в этот буфер его начальное
содержимое по умолчанию. После этого запускается
mail-setup-hook
.
M-x spook добавляет в отправляемое сообщение строку случайно выбранных ключевых слов. Эти ключевые слова выбираются из списка слов, которые предполагают, что вы обсуждаете что-то .
За этой возможностью стоит идея, что NSA(11) просматривает электронную почту, содержащую ключевые слова, которые они могут найти интересными. (NSA говорит, что они этого не делают, но они должны так говорить.) Идея состоит в том, что если многие люди добавляют к своим сообщениям подозрительные слова, NSA будет настолько занято подделками, что вынуждено будет совсем прекратить просмотр.
Вот как автоматически вставлять зловещие ключевые слова, когда вы начинаете набирать сообщение:
(add-hook 'mail-setup-hook 'spook)
Смущает это NSA или нет, по крайней мере это развлекает людей.
Эта глава описывает обычный режим Emacs для редактирования и отправки
почты -- режим Mail. В Emacs есть иные способы для этого, включая
режимы MH-E и Message, не описанные в этом руководстве. Вы можете
выбрать любой из них в качестве своего предпочтительного способа.
Команды C-x m
, C-x 4 m
и C-x 5 m
используют тот
агент, который вы задали. Так же делают и другие команды и программы
Emacs, посылающие почту.
Чтобы указать ваш способ составления сообщений, установите переменную
mail-user-agent
. На данный момент допустимые значения включают
sendmail-user-agent
, mh-e-user-agent
и
message-user-agent
.
Если вы выбрали другой способ составления сообщений, информация о буфере `*mail*' и режиме Mail из этой главы не относится к вашему случаю; другие методы могут использовать совершенно иные команды с иным форматом в иначе называемом буфере.