1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350
|
@node Sending Mail, Reading Mail, Picture, Top
@chapter Sending Mail
@cindex mail
@cindex message
To send a message in Emacs, start by typing the command (@kbd{C-x m})
to select and initialize the @samp{*mail*} buffer. You can then edit the text
and headers of the message in the mail buffer, and type the command
(@kbd{C-c C-c}) to send the message.
@table @kbd
@item C-x m
Begin composing a message to send (@code{mail}).
@item C-x 4 m
Likewise, but display the message in another window
(@code{mail-other-window}).
@item C-c C-c
In Mail mode, send the message and switch to another buffer
(@code{mail-send-and-exit}).
@end table
@kindex C-x m
@findex mail
@kindex C-x 4 m
@findex mail-other-window
The command @kbd{C-x m} (@code{mail}) selects a buffer named
@samp{*mail*} and initializes it with the skeleton of an outgoing message.
@kbd{C-x 4 m} (@code{mail-other-window}) selects the @samp{*mail*} buffer
in a different window, leaving the previous current buffer visible.@refill
Because the buffer for mail composition is an ordinary Emacs buffer, you can
switch to other buffers while in the middle of composing mail, and switch
back later (or never). If you use the @kbd{C-x m} command again when you
have been composing another message but have not sent it, a new mail
buffer will be created; in this way, you can compose multiple messages
at once. You can switch back to and complete an unsent message by using
the normal buffer selection mechanisms.
@kbd{C-u C-x m} is another way to switch back to a message in progress:
it will search for an existing, unsent mail message buffer and select it.
@menu
* Format: Mail Format. Format of the mail being composed.
* Headers: Mail Headers. Details of allowed mail header fields.
* Mode: Mail Mode. Special commands for editing mail being composed.
@end menu
@node Mail Format, Mail Headers, Sending Mail, Sending Mail
@section The Format of the Mail Buffer
In addition to the @dfn{text} or contents, a message has @dfn{header
fields}, which say who sent it, when, to whom, why, and so on. Some header
fields, such as the date and sender, are created automatically after the
message is sent. Others, such as the recipient names, must be specified by
you in order to send the message properly.
Mail mode provides a few commands to help you edit some header fields,
and some are preinitialized in the buffer automatically at times. You can
insert or edit any header fields using ordinary editing commands.
The line in the buffer that says:
@example
--text follows this line--
@end example
@vindex mail-header-separator
@noindent
is a special delimiter that separates the headers you have specified from
the text. Whatever follows this line is the text of the message; the
headers precede it. The delimiter line itself does not appear in the
message actually sent. The text used for the delimiter line is controlled
by the variable @code{mail-header-separator}.
Here is an example of what the headers and text in the @samp{*mail*} buffer
might look like.
@example
To: rms@@mc
CC: mly@@mc, rg@@oz
Subject: The XEmacs User's Manual
--Text follows this line--
Please ignore this message.
@end example
@node Mail Headers, Mail Mode, Mail Format, Sending Mail
@section Mail Header Fields
@cindex headers (of mail message)
There are several header fields you can use in the @samp{*mail*} buffer.
Each header field starts with a field name at the beginning of a line,
terminated by a colon. It does not matter whether you use upper or lower
case in the field name. After the colon and optional whitespace comes the
contents of the field.
@table @samp
@item To
This field contains the mailing addresses of the message.
@item Subject
The contents of the @samp{Subject} field should be a piece of text that
says what the message is about. Subject fields are useful because most
mail-reading programs can provide a summary of messages, listing the
subject of each message but not its text.
@item CC
This field contains additional mailing addresses to send the message
to, but whose readers should not regard the message as addressed to
them.
@item BCC
This field contains additional mailing addresses to send the message
to, but which should not appear in the header of the message actually
sent.
@item FCC
This field contains the name of one file (in Unix mail file format) to
which a copy of the message should be appended when the message is
sent.
@item From
Use the @samp{From} field to say who you are, when the account you are
using to send the mail is not your own. The contents of the
@samp{From} field should be a valid mailing address, since replies
will normally go there.
@item Reply-To
Use the @samp{Reply-To} field to direct replies to a different
address, not your own. @samp{From} and
@samp{Reply-To} have the same effect on where replies go, but they convey a
different meaning to the person who reads the message.
@item In-Reply-To
This field contains a piece of text describing a message you are
replying to. Some mail systems can use the information to correlate
related pieces of mail. This field is normally filled in by your mail
handling package when you are replying to a message and you never need
to think about it.
@end table
@noindent
The @samp{To}, @samp{CC}, @samp{BCC} and @samp{FCC} fields can appear
any number of times, to specify many places to send the message.
@noindent
The @samp{To}, @samp{CC}, and @samp{BCC}, fields can have continuation
lines. All the lines starting with whitespace, following the line on
which the field starts, are considered part of the field. For
example,@refill
@example
To: foo@@here, this@@there,
me@@gnu.cambridge.mass.usa.earth.spiral3281
@end example
@noindent
@vindex mail-abbrev-mailrc-file
If you have a @file{~/.mailrc} file, Emacs scans it for mail aliases the
first time you try to send mail in an Emacs session. Emacs expands
aliases found in the @samp{To}, @samp{CC}, and @samp{BCC} fields where
appropriate. You can set the variable @code{mail-abbrev-mailrc-file} to
the name of the file with mail aliases. If @code{nil}, @file{~/.mailrc}
is used.
@cindex .mailrc file
Your @file{.mailrc} file ensures that word-abbrevs are defined for each
of your mail aliases when point is in a @samp{To}, @samp{CC},
@samp{BCC}, or @samp{From} field. The aliases are defined in your
@file{.mailrc} file or in a file specified by the @b{MAILRC}
environment variable if it exists. Your mail aliases expand any time
you type a word-delimiter at the end of an abbreviation.
In this version of Emacs, what you see is what you get: in contrast to
some other versions, no abbreviations are expanded after you have sent the
mail. This means you don't suffer the annoyance of having the system do
things behind your back---if the system rewrites an address you typed,
you know it immediately, instead of after the mail has been sent and
it's too late to do anything about it. For example, you will never
again be in trouble because you forgot to delete an old alias from your
@file{.mailrc} and a new local user is given a userid which conflicts
with one of your aliases.
@vindex mail-abbrev-mode-regexp
Your mail alias abbrevs are in effect only when point is in an
appropriate header field. The mail aliases will not expand in the body
of the message, or in other header fields. The default mode-specific
abbrev table @code{mail-mode-abbrev-table} is used instead if defined.
That means if you have been using mail-mode specific abbrevs, this code
will not adversely affect you. You can control which header fields the
abbrevs are used in by changing the variable @code{mail-abbrev-mode-regexp}.
If auto-fill mode is on, abbrevs wrap at commas instead of at word
boundaries, and header continuation lines will be properly indented.
@findex mail-interactive-insert-alias
You can also insert a mail alias with @code{mail-interactive-insert-alias}.
This function, which is bound to @kbd{C-c C-a}, prompts you for an alias
(with completion) and inserts its expansion at point.
In this version of Emacs, it is possible to have lines like the
following in your @file{.mailrc} file:
@example
alias someone "John Doe <doe@@quux.com>"
@end example
That is, if you want an address to have embedded spaces, simply surround
it with double-quotes. The quotes are necessary because the format of
the @file{.mailrc} file uses spaces as address delimiters.
Aliases in the @file{.mailrc} file may be nested. For example, assume
you define aliases like:
@example
alias group1 fred ethel
alias group2 larry curly moe
alias everybody group1 group2
@end example
When you now type @samp{everybody} on the @samp{To} line, it will expand to:
@example
fred, ethyl, larry, curly, moe
@end example
Aliases may contain forward references; the alias of @samp{everybody} in the
example above can precede the aliases of @samp{group1} and @samp{group2}.
In this version of Emacs, you can use the @code{source} @file{.mailrc} command
for reading aliases from some other file as well.
Aliases may contain hyphens, as in @code{"alias foo-bar foo@@bar"}, even
though word-abbrevs normally cannot contain hyphens.
To read in the contents of another @file{.mailrc}-type file from Emacs, use the
command @code{M-x merge-mail-aliases}. The @code{rebuild-mail-aliases}
command is similar, but deletes existing aliases first.
@vindex mail-alias-separator-string
If you want multiple addresses separated by a string other than @samp{,}
(a comma), then set the variable @code{mail-alias-separator-string} to
it. This has to be a comma bracketed by whitespace if you want any kind
of reasonable behavior.
@vindex mail-archive-file-name
If the variable @code{mail-archive-file-name} is non-@code{nil}, it
should be a string naming a file. Each time you start to edit a message
to send, an @samp{FCC} field is entered for that file. Unless you
remove the @samp{FCC} field, every message is written into that
file when it is sent.
@node Mail Mode,, Mail Headers, Sending Mail
@section Mail Mode
The major mode used in the @samp{*mail*} buffer is Mail mode. Mail
mode is similar to Text mode, but several commands are provided on
the @kbd{C-c} prefix. These commands all deal specifically with
editing or sending the message.
@table @kbd
@item C-c C-s
Send the message, and leave the @samp{*mail*} buffer selected
(@code{mail-send}).
@item C-c C-c
Send the message, and select some other buffer (@code{mail-send-and-exit}).
@item C-c C-f C-t
Move to the @samp{To} header field, creating one if there is none
(@code{mail-to}).
@item C-c C-f C-s
Move to the @samp{Subject} header field, creating one if there is
none (@code{mail-subject}).
@item C-c C-f C-c
Move to the @samp{CC} header field, creating one if there is none
(@code{mail-cc}).
@item C-c C-w
Insert the file @file{~/.signature} at the end of the message text
(@code{mail-signature}).
@item C-c C-y
Yank the selected message (@code{mail-yank-original}).
@item C-c C-q
Fill all paragraphs of yanked old messages, each individually
(@code{mail-fill-yanked-message}).
@item @key{button3}
Pops up a menu of useful mail-mode commands.
@end table
@kindex C-c C-s (Mail mode)
@kindex C-c C-c (Mail mode)
@findex mail-send
@findex mail-send-and-exit
There are two ways to send a message. @kbd{C-c C-c}
(@code{mail-send-and-exit}) is the usual way to send the message. It
sends the message and then deletes the window (if there is another
window) or switches to another buffer. It puts the @samp{*mail*} buffer
at the lowest priority for automatic reselection, since you are finished
with using it. @kbd{C-c C-s} (@code{mail-send}) sends the
message and marks the @samp{*mail*} buffer unmodified, but leaves that
buffer selected so that you can modify the message (perhaps with new
recipients) and send it again.
@kindex C-c C-f C-t (Mail mode)
@findex mail-to
@kindex C-c C-f C-s (Mail mode)
@findex mail-subject
@kindex C-c C-f C-c (Mail mode)
@findex mail-cc
Mail mode provides some other special commands that are useful for
editing the headers and text of the message before you send it. There are
three commands defined to move point to particular header fields, all based
on the prefix @kbd{C-c C-f} (@samp{C-f} is for ``field''). They are
@kbd{C-c C-f C-t} (@code{mail-to}) to move to the @samp{To} field, @kbd{C-c
C-f C-s} (@code{mail-subject}) for the @samp{Subject} field, and @kbd{C-c
C-f C-c} (@code{mail-cc}) for the @samp{CC} field. These fields have
special motion commands because they are edited most frequently.
@kindex C-c C-w (Mail mode)
@findex mail-signature
@kbd{C-c C-w} (@code{mail-signature}) adds a standard piece of text at
the end of the message to say more about who you are. The text comes
from the file @file{.signature} in your home directory.
@kindex C-c C-y (Mail mode)
@findex mail-yank-original
When you use an Rmail command to send mail from the Rmail mail reader,
you can use @kbd{C-c C-y} @code{mail-yank-original} inside the
@samp{*mail*} buffer to insert the
text of the message you are replying to. Normally Rmail indents each line
of that message four spaces and eliminates most header fields. A
numeric argument specifies the number of spaces to indent. An argument
of just @kbd{C-u} says not to indent at all and not to eliminate
anything. @kbd{C-c C-y} always uses the current message from the
@samp{RMAIL} buffer, so you can insert several old messages by selecting
one in @samp{RMAIL}, switching to @samp{*mail*} and yanking it, then
switching back to @samp{RMAIL} to select another.@refill
@kindex C-c C-q (Mail mode)
@findex mail-fill-yanked-message
After using @kbd{C-c C-y}, you can use the command @kbd{C-c C-q}
(@code{mail-fill-yanked-message}) to fill the paragraphs of the yanked
old message or messages. One use of @kbd{C-c C-q} fills all such
paragraphs, each one separately.
Clicking the right mouse button in a mail buffer pops up a menu of
the above commands, for easy access.
@vindex mail-mode-hook
Turning on Mail mode (which @kbd{C-x m} does automatically) calls the
value of @code{text-mode-hook}, if it is not void or @code{nil}, and
then calls the value of @code{mail-mode-hook} if that is not void or
@code{nil}.
|