MAIL(1) | General Commands Manual | MAIL(1) |
mail
, mailx
— send and receive mail
mail |
[-dEiInv ] [-s
subject] [-c
cc-addr] [-b
bcc-addr] [-F ]
to-addr ... |
mail |
[-dEHiInNv ] [-F ]
-f [name] |
mail |
[-dEHiInNv ] [-F ]
[-u user] |
mail |
[-d ] -e
[-f name] |
mail |
[-H ] |
The mail
utility is an intelligent mail
processing system, which has a command syntax reminiscent of
ed(1) with lines replaced by messages.
The following options are available:
-v
-d
-e
-H
-E
-i
mail
on noisy phone lines.-I
mail
to run in interactive mode even when
input is not a terminal. In particular, the
‘~
’ special character when sending
mail is only active in interactive mode.-n
-N
-s
subject-s
flag is used as a subject;
be careful to quote subjects containing spaces.)-c
cc-addr-b
bcc-addr-f
mail
writes undeleted messages back to
this file.-F
To:
” line in the mail header.
Overrides the record variable, if set.-u
usermail -f
/var/mail/user
At startup time mail
will execute commands
in the system command files /usr/share/misc/mail.rc,
/usr/local/etc/mail.rc and
/etc/mail.rc in order, unless explicitly told not to
by the use of the -n
option. Next, the commands in
the user's personal command file ~/.mailrc are
executed. The mail
utility then examines its command
line options to determine whether a new message is to be sent, or whether an
existing mailbox is to be read.
To send a message to one or more people,
mail
can be invoked with arguments which are the
names of people to whom the mail will be sent. You are then expected to type
in your message, followed by a
⟨control-D
⟩ at the beginning of a
line. The section below
Replying To or
Originating Mail, describes some features of
mail
available to help you compose your letter.
In normal usage mail
is given no arguments
and checks your mail out of the post office, then prints out a one line
header of each message found. The current message is initially the first
message (numbered 1) and can be printed using the
print
command (which can be abbreviated
p
). You can move among the messages much as you move
between lines in ed(1), with the commands
+
and -
moving backwards and
forwards, and simple numbers.
After examining a message you can delete
(d
) the message or reply
(r
) to it. Deletion causes the
mail
program to forget about the message. This is
not irreversible; the message can be undeleted
(u
) by giving its number, or the
mail
session can be aborted by giving the
exit
(x
) command. Deleted
messages will, however, usually disappear never to be seen again.
Commands such as print
and
delete
can be given a list of message numbers as
arguments to apply to a number of messages at once. Thus
“delete 1 2
” deletes messages 1 and 2,
while “delete 1-5
” deletes messages 1
through 5. The special name ‘*
’
addresses all messages, and ‘$
’
addresses the last message; thus the command top
which prints the first few lines of a message could be used in
“top *
” to print the first few lines
of all messages.
You can use the reply
command to set up a
response to a message, sending it back to the person who it was from. Text
you then type in, up to an end-of-file, defines the contents of the message.
While you are composing a message, mail
treats lines
beginning with the character ‘~
’
specially. For instance, typing ~m
(alone on a line)
will place a copy of the current message into the response right shifting it
by a tabstop (see indentprefix variable, below). Other
escapes will set up subject fields, add and delete recipients to the message
and allow you to escape to an editor to revise the message or to a shell to
run some commands. (These options are given in the summary below.)
You can end a mail
session with the
quit
(q
) command. Messages
which have been examined go to your mbox file unless
they have been deleted in which case they are discarded. Unexamined messages
go back to the post office. (See the -f
option
above).
It is also possible to create a personal distribution lists so
that, for instance, you can send mail to
“cohorts
” and have it go to a group of
people. Such lists can be defined by placing a line like
alias cohorts bill ozalp jkf mark
kridle@ucbcory
in the file .mailrc in your home
directory. The current list of such aliases can be displayed with the
alias
command in mail
.
System wide distribution lists can be created by editing
/etc/mail/aliases, see
aliases(5) and
sendmail(8); these are kept in a
different syntax. In mail you send, personal aliases will be expanded in
mail sent to others so that they will be able to
reply
to the recipients. System wide aliases are not
expanded when the mail is sent, but any reply returned to the machine will
have the system wide alias expanded as all mail goes through
sendmail(8).
Recipient addresses (any of the “To”,
“Cc” or “Bcc” header fields) are subject to
expansion when the expandaddr
option is set.
An address may be expanded as follows:
|
’) character is treated as a
command to run. The command immediately following the
‘|
’ is executed with the message as
its standard input.+
’
character is treated as a folder./
’
character but no ‘!
’,
‘%
’, or
‘@
’ characters is also treated as a
folder.If the expandaddr
option is not set (the
default), no expansion is performed and the recipient is treated as a local
or network mail address.
The mail
utility has a number of options
which can be set in the .mailrc file to alter its
behavior; thus “set askcc
” enables the
askcc feature. (These options are summarized
below.)
(Adapted from the Mail Reference Manual.)
Each command is typed on a line by itself, and may take arguments
following the command word. The command need not be typed in its entirety
— the first command which matches the typed prefix is used. For
commands which take message lists as arguments, if no message list is given,
then the next message forward which satisfies the command's requirements is
used. If there are no messages forward of the current message, the search
proceeds backwards, and if there are no good messages at all,
mail
types “No applicable
messages
” and aborts the command.
-
#
?
!
Print
P
) Like print
but also
prints out ignored header fields. See also print
,
ignore
and retain
.Reply
R
) Reply to originator. Does not reply to other
recipients of the original message.Type
T
) Identical to the Print
command.alias
a
) With no arguments, prints out all
currently-defined aliases. With one argument, prints out that alias. With
more than one argument, creates a new alias or changes an old one.alternates
alt
) The alternates
command is useful if you have accounts on several machines. It can be used
to inform mail
that the listed addresses are
really you. When you reply
to messages,
mail
will not send a copy of the message to any of
the addresses listed on the alternates
list. If
the alternates
command is given with no argument,
the current set of alternative names is displayed.chdir
c
) Changes the user's working directory to that
specified, if given. If no directory is given, then changes to the user's
login directory.copy
co
) The copy
command does
the same thing that save
does, except that it does
not mark the messages it is used on for deletion when you
quit
.delete
d
) Takes a list of messages as argument and marks
them all as deleted. Deleted messages will not be saved in
mbox, nor will they be available for most other
commands.dp
dt
) Deletes the current message and prints
the next message. If there is no next message,
mail
says “at
EOF
”.edit
e
) Takes a list of messages and points the text
editor at each one in turn. On return from the editor, the message is read
back in.exit
ex
or x
) Effects an
immediate return to the shell without modifying the user's system mailbox,
his mbox file, or his edit file in
-f
.file
fi
) The same as
folder
.folders
folder
fo
) The folder
command
switches to a new mail file or folder. With no arguments, it tells you
which file you are currently reading. If you give it an argument, it will
write out changes (such as deletions) you have made in the current file
and read in the new file. Some special conventions are recognized for the
name. ‘#
’ means the previous file,
‘%
’ means your system mailbox,
“%
user” means
user's system mailbox, ‘&
’ means
your mbox file, and
“+
folder”
means a file in your folder directory.from
f
) Takes a list of messages and prints their
message headers.headers
h
) Lists the current range of headers, which is
an 18-message group. If a ‘+
’
argument is given, then the next 18-message group is printed, and if a
‘-
’ argument is given, the previous
18-message group is printed.help
?
.hold
ho
, also preserve
) Takes
a message list and marks each message therein to be saved in the user's
system mailbox instead of in mbox. Does not
override the delete
command.ignore
Type
and Print
commands
can be used to print a message in its entirety, including ignored fields.
If ignore
is executed with no arguments, it lists
the current set of ignored fields.inc
mail
m
) Takes as argument login names and distribution
group names and sends mail to those people.mbox
hold
option set.more
mo
) Takes a list of messages and invokes the
pager on that list.next
n
, like +
or CR) Goes to
the next message in sequence and types it. With an argument list, types
the next matching message.preserve
pre
) A synonym for
hold
.print
p
) Takes a message list and types out each
message on the user's terminal.quit
q
) Terminates the session, saving all undeleted,
unsaved messages in the user's mbox file in his
login directory, preserving all messages marked with
hold
or preserve
or never
referenced in his system mailbox, and removing all other messages from his
system mailbox. If new mail has arrived during the session, the message
“You have new mail
” is given. If
given while editing a mailbox file with the -f
flag, then the edit file is rewritten. A return to the shell is effected,
unless the rewrite of edit file fails, in which case the user can escape
with the exit
command.reply
r
) Takes a message list and sends mail to the
sender and all recipients of the specified message. The default message
must not be deleted.respond
reply
.retain
type
and
print
commands can be used to print a message in
its entirety. If retain
is executed with no
arguments, it lists the current set of retained fields.save
s
) Takes a message list and a filename and
appends each message in turn to the end of the file. The filename in
quotes, followed by the line count and character count is echoed on the
user's terminal.set
se
) With no arguments, prints all variable
values. Otherwise, sets option. Arguments are of the form
option=
value
(no space before or after ‘=
’) or
option. Quotation marks may be placed around any
part of the assignment statement to quote blanks or tabs, i.e.
“set
indentprefix="->"
”saveignore
Saveignore
is to save
what ignore
is
to print
and type
. Header
fields thus marked are filtered out when saving a message by
save
or when automatically saving to
mbox.saveretain
Saveretain
is to save
what retain
is
to print
and type
. Header
fields thus marked are the only ones saved with a message when saving by
save
or when automatically saving to
mbox. Saveretain
overrides
saveignore
.shell
sh
) Invokes an interactive version of the
shell.size
source
source
command reads commands from a
file.top
type
t
) A synonym for
print
.unalias
alias
commands
and discards the remembered groups of users. The group names no longer
have any significance.undelete
u
) Takes a message list and marks each message as
not being deleted.unread
U
) Takes a message list and marks each message as
not having been read.unset
set
.visual
v
) Takes a message list and invokes the display
editor on each message.write
w
) Similar to save
,
except that
only the
message body
(without
the header) is saved. Extremely useful for such tasks as sending and
receiving source program text over the message system.xit
x
) A synonym for
exit
.z
mail
utility presents message headers in
windowfuls as described under the headers
command.
You can move mail
's attention forward to the next
window with the z
command. Also, you can move to
the previous window by using z-
.Here is a summary of the tilde escapes, which are used when composing messages to perform special functions. Tilde escapes are only recognized at the beginning of lines. The name “tilde escape” is somewhat of a misnomer since the actual escape character can be set by the option escape.
~a
~A
~b
name ...~c
name ...~d
~e
~f
messagesignore
or
retain
command) are not included.~F
messages~f
, except all message headers are
included.~h
~i
string~m
messagesignore
or
retain
command) are not included.~M
messages~m
, except all message headers are
included.~p
~q
~r
filename, ~r
!
command~<
filename, ~<
!
command!
’, the rest of the string is taken
as an arbitrary system command and is executed, with the standard output
inserted into the message.~R
string~s
string~t
name ...~v
VISUAL
environment variable) on the message
collected so far. Usually, the alternative editor will be a screen editor.
After you quit the editor, you may resume appending text to the end of
your message.~w
filename~x
~q
, except the message is not saved
in dead.letter.~!
command~|
command, ~^
command~:
mail-command, ~_
mail-commandmail
command. Not all commands,
however, are allowed.~.
~?
~~
string~
’. If you have changed the escape
character, then you should double that character in order to send it.Options can be set with the set
command
and can be disabled with the unset
or
set
no
name commands. Options may
be either binary, in which case it is only significant to see whether they
are set or not; or string, in which case the actual value is of interest. If
an option is not set, mail
will look for an
environment variable of the same name. The available options include the
following:
mail
to prompt you for the subject of each
message you send. If you respond with simply a newline, no subject field
will be sent. Default is asksub.inc
command at each
prompt, except that the current message is not reset when new mail
arrives. Default is noautoinc.delete
command to behave like
dp
; thus, after deleting a message, the next one
will be typed automatically. Default is
noautoprint.PAGER
is used to read it. If crt is set without a value,
then the height of the terminal screen stored in the system is used to
compute the threshold (see stty(1)).
Default is nocrt.-d
on the command line and causes
mail
to output all sorts of information useful for
debugging mail
. In case
mail
is invoked in this mode to send mail, all
preparations will be performed and reported about, but the mail will not
be actually sent. Default is nodebug.mail
to interpret a period alone on a line as the
terminator of a message you are sending. Default is
nodot.~
’ to denote
escapes.mail
to expand message recipient addresses,
as explained in the section
Recipient address
specifications.reply
and
Reply
commands. Default is
noflipr./
’,
mail
considers it to be an absolute pathname;
otherwise, the folder directory is found relative to your home
directory.-N
flag on the command
line.@
's. Default is
noignore.mail
refuse to accept a ⟨control-D
⟩ as
the end of a message. Ignoreeof also applies to
mail
command mode. Default is
noignoreeof.~m
tilde escape for indenting
messages, in place of the normal tab character
(^I
). Be sure to quote the value if it contains
spaces or tabs.reply
and
Reply
commands. Default is
noReplyall.mail
will copy the partial letter to the
file dead.letter in your home directory. Default
is save./
x:y”
will expand to all messages containing the substring
y in the header field x. The
string search is case insensitive. If x is omitted,
it will default to the “Subject
”
header field. The form
“/to:
y” is a
special case, and will expand to all messages containing the substring
y in the “To
”,
“Cc
” or
“Bcc
” header fields. The check for
"to
" is case sensitive, so that
“/To:
y” can be
used to limit the search for y to just the
“To:
” field. Default is
nosearchheaders.top
command; normally, the first five lines
are printed.-v
flag on the command line. When
mail
runs in verbose mode, the actual delivery of
messages is displayed on the user's terminal. Default is
noverbose.DEAD
EDITOR
edit
command and ~e
escape. If not defined, then a
default editor is used.HOME
LISTER
folders
command. Default is
/bin/ls.MAIL
MAILRC
mail
commands.
Default is ~/.mailrc.MBOX
PAGER
more
command
or when crt variable is set. The default paginator
less(1) is used if this option is not
defined.REPLYTO
SHELL
!
command and
the ~!
escape. A default shell is used if this
option is not defined.TMPDIR
VISUAL
visual
command and ~v
escape.USER
mail
commands. This can be
overridden by setting the MAILRC
environment
variable.A mail
command appeared in
Version 1 AT&T UNIX. This man page is
derived from The Mail Reference Manual originally
written by Kurt Shoens.
Usually, mail
is just a link to
Mail
and mailx
, which can be
confusing.
The name of the alternates
list is
incorrect English (it should be “alternatives”), but is
retained for compatibility.
August 8, 2018 | macOS 14.6 |