Посылка почты

C-x m
Начать составление сообщения для пересылки (compose-mail).
C-x 4 m
Аналогично, но показать сообщение в другом окне (compose-mail-other-window).
C-x 5 m
Аналогично, но создать новый фрейм (compose-mail-other-frame).
C-c C-s
В режиме Mail, посылает сообщение (mail-send).
C-c C-c
Посылает сообщение и прячет его буфер (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: gnu@gnu.org
CC: lungfish@spam.org, byob@spam.org
Subject: The Emacs Manual
--Text follows this line--
Please ignore this message.

Поля заголовка сообщения

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

Вы можете использовать для полей заголовка любые имена, какие вам нравятся, но обычно люди используют только стандартные имена с принятыми значениями. Ниже приведена таблица часто используемых в посылаемых сообщениях полей.

`To'
Это поле содержит почтовые адреса, на которые посылается сообщение. Если вы перечисляете более одного адреса, используйте для их разделения запятые, а не пробелы.
`Subject'
Содержанием поля `Subject' должен быть фрагмент текста, который указывает, о чем будет сообщение. Смысл полей `Subject' в том, что большинство программ чтения почты могут предоставлять обзорный перечень сообщений, печатая только тему каждого сообщения, а не весь текст.
`CC'
Это поле, как и поле `To', содержит дополнительные почтовые адреса, по которым нужно отправить сообщение, но эти читатели не должны рассматривать это сообщение как адресованное им.
`BCC'
Это поле содержит дополнительные почтовые адреса, по которым отправляется сообщение, но они не должны появляться в заголовке фактически посланного сообщения. Посланные таким образом копии называются слепыми копиями. Чтобы вам посылалась слепая копия каждого исходящего сообщения, установите переменную mail-self-blind равной t.
`FCC'
Это поле содержит имя файла, оно велит Emacs добавить после отправки копию этого сообщения в заданный файл. Если это файл в формате Rmail, Emacs записывает сообщение в формате Rmail; в противном случае -- в системном формате почтовых файлов. Чтобы каждый раз, когда вы начинаете редактирование исходящего сообщения, в поле `FCC' помещалось фиксированное имя файла, установите переменную mail-archive-file-name равной имени этого файла. Если вы не удалите поле `FCC' перед посылкой, сообщение будет записано в этот файл.
`From'
Используйте поле `From', чтобы назвать себя, когда вы отправляете почту, войдя в систему под чужим именем. Содержимое поля `From' должно быть правильным почтовым адресом, поскольку обычно ответы направляются по этому адресу. Если вы не задали поле `From' сами, Emacs использует значение user-mail-address в качестве значения по умолчанию.
`Reply-to'
Используйте это поле, чтобы направлять ответы по адресам, отличным от вашего собственного. Большинство программ чтения почты (включая Rmail) автоматически посылают ответы по адресу `Reply-to'; он имеет приоритет перед адресом `From'. Добавляя в заголовок поле `Reply-to', вы можете избавиться от любых проблем, которые может вызывать при ответе ваш адрес `From'. Чтобы какой-то адрес для `Reply-to' помещался в каждое исходящее сообщение, установите переменную mail-default-reply-to равной этом адресу (в виде строки). Тогда mail инициализирует сообщения с заданным адресом `Reply-to'. Вы можете удалить или изменить это поле заголовка перед отправкой сообщения, если хотите. Когда Emacs начинает работу, mail-default-reply-to инициализируется по переменной среды `REPLYTO', если она установлена.
`In-reply-to'
Это поле содержит фрагмент текста, описывающий сообщение, на которое вы отвечаете. Некоторые почтовые системы могут использовать эту информацию для соотношения связанных между собой фрагментов почты. Обычно это поле заполняется самим Rmail, когда вы отвечаете на сообщение из него, и вам никогда не придется думать об этом (смотрите раздел Чтение почты с помощью Rmail).
`References'
В этом поле перечисляются ID предыдущих сообщений, связанных с этим. Rmail устанавливает это поле автоматически, когда вы отвечаете на какое-то сообщение.

Поля заголовка `To', `CC', `BCC' и `FCC' могут использоваться любое число раз, и каждое из этих полей может содержать несколько адресов, разделенных запятыми. Поля `To', `CC' или `BCC' могут также иметь строки продолжения: одна или несколько строк, начинающиеся с пробельных знаков и следующие за строкой, на которой начинается поле, рассматриваются как часть этого поля. Вот пример поля `To' со строкой продолжения:

To: foo@here.net, this@there.net,
 me@gnu.cambridge.mass.usa.earth.spiral3281

При посылке сообщения, если вы не написали поле `From' сами, Emacs сделает это за вас. Формат этого поля управляется переменной mail-from-style:

nil
Только почтовый адрес, как `king@grassland.com'.
parens
И почтовый адрес, и полное имя, как `king@grassland.com (Elvis Parsley)'.
angles
То же, но как `Elvis Parsley <king@grassland.com>'.
system-default
Позволить системе самой вставить поле `From'.

Почтовые псевдонимы

Вы можете определить почтовые псевдонимы в файле с именем `~/.mailrc'. Это короткие мнемонические имена, обозначающие почтовые адреса или группы адресов. Подобно многим другим почтовым программам, Emacs раскрывает псевдонимы, когда они появляются в полях `To', `From', `CC', `BCC' и `Reply-to' и в их вариантах с `Resent-'.

Чтобы определить псевдоним в `~/.mailrc', напишите одну строку в таком формате:

alias короткий-адрес полные-адреса

Здесь полные-адреса означает один или более почтовых адресов, в которые раскрывается короткий-адрес. Разделяйте адреса пробелами; если адрес содержит пробел, заключайте весь адрес в двойные кавычки.

Например, чтобы сделать так, чтобы maingnu обозначало ваш собственный местный адрес и gnu@gnu.org , поместите такую строку:

alias maingnu gnu@gnu.org local-gnu

Emacs также распознает в файлах `.mailrc' команды включения. Они выглядят так:

source имя-файла

Файл `~/.mailrc' в основном используется другими программами для чтения почты; он может содержать различные другие команды. Emacs игнорирует всё, кроме определений псевдонимов и команд включения.

Есть другой способ определить почтовый псевдоним, но только внутри Emacs -- с помощью команды define-mail-alias. Она запрашивает псевдоним и затем полный адрес. Вы можете использовать её для определения псевдонимов в вашем файле `.emacs', следующим образом:

(define-mail-alias "maingnu" "gnu@gnu.org")

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

Основной режим, используемый в буфере сообщения -- это режим Mail, который очень похож на режим Text за исключением того, что в нем предоставляются различные специальные команды на префиксе C-c. Все эти команды должны производить различные операции с редактируемым или посылаемым сообщением. Кроме того, режим Mail определяет знак `%' как разделитель слов; это полезно при использовании команд, работающих со словами, для редактирования почтовых адресов.

Режим Mail обычно используется в буферах, автоматически подготовленных командой mail или родственными командами. Однако, вы можете также переключиться в режим Mail в буфере, обращающемся к файлу. Это полезно делать, если вы сохранили в файле черновик сообщения.

Отправка почты

В режиме Mail есть две команды для отправки сообщения, которое вы редактировали:

C-c C-s
Послать это сообщение и оставить буфер с ним выбранным (mail-send).
C-c C-c
Послать это сообщение и выбрать какой-то другой буфер (mail-send-and-exit).

C-c C-s (mail-send) отсылает сообщение и помечает буфер с этим сообщением как немодифицированный, но при этом оставляет этот буфер выбранным, так что вы можете изменить это сообщение (возможно с новыми получателями) и послать его снова.

C-c C-c (mail-send-and-exit) отсылает сообщение, а затем удаляет окно или переключает в другой буфер. Эта команда устанавливает для буфера с сообщением самый низкий приоритет для повторного выбора, так как вы перестали его использовать. Это обычный способ отправки сообщения.

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

Когда вы отправляете сообщение, которое содержит знаки, не входящие в ASCII, эти знаки необходимо перевести в какую-то систему кодирования (смотрите раздел Системы кодирования). Обычно она устанавливается вашей языковой средой (смотрите раздел Языковые среды). Вы можете явно указать систему кодирования для исходящей почты, устанавливая переменную sendmail-coding-system.

Если определяемая таким образом система кодирования не может обработать знаки в каком-то сообщении, Emacs просит вас выбрать систему кодирования самим, показывая список возможных вариантов.

Редактирование заголовка сообщения

Режим Mail предоставляет специальные команды для передвижения к определенным полям заголовка и для завершения адресов.

C-c C-f C-t
Перейти к полю заголовка `To', создавая его, если его ещё нет (mail-to).
C-c C-f C-s
Перейти к полю заголовка `Subject', создавая его, если его ещё нет (mail-subject).
C-c C-f C-c
Перейти к полю заголовка `CC', создавая его, если его ещё нет (mail-cc).
C-c C-f C-b
Перейти к полю заголовка `BCC', создавая его, если его ещё нет (mail-bcc).
C-c C-f C-f
Перейти к полю заголовка `FCC', создавая его, если его ещё нет (mail-fcc).
M-TAB
Завершить почтовый адрес (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.

C-c C-y
Восстановить выбранное сообщение из Rmail (mail-yank-original).
C-c C-r
Восстановить область из буфера Rmail (mail-yank-region).
C-c C-q
Заполнить все абзацы, процитированные из другого сообщения (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

C-c C-t
Перемещает к началу текста тела сообщения (mail-text).
C-c C-w
Вставляет файл `~/.signature' в конец текста сообщения (mail-signature).
C-c C-i файл RET
Вставляет содержимое файла в конец исходящего сообщения (mail-attach-file).
M-x ispell-message
Производит проверку правописания в тексте сообщения, но не в цитатах из других сообщений.

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.

Как сбить с толку NSA

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 из этой главы не относится к вашему случаю; другие методы могут использовать совершенно иные команды с иным форматом в иначе называемом буфере.

Назад |  Вперед |  Содержание



Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024