Go to the first, previous, next, last section, table of contents.

Sending Messages

When sending messages from within VM, you will be using the standard Mail major mode provided with GNU Emacs, plus some extensions added by VM. See section `Mail Mode' in the GNU Emacs Manual. However, mail composition buffers created by VM have some extra command keys.

C-c C-y (vm-yank-message)
Copies a message from the folder that is the parent of this composition into the mail composition buffer. The message number is read from the minibuffer. By default, each line of the copy is prepended with the value of the variable vm-included-text-prefix. All message headers are yanked along with the text. Point is left before the inserted text, the mark after. Any hook functions bound to mail-yank-hooks are run, after inserting the text and setting point and mark. If a prefix argument is given, this tells VM to ignore mail-yank-hooks, don't set the mark, don't prepend the value of vm-included-text-prefix to every yanked line, and don't yank any headers other than those specified in vm-visible-headers and vm-invisible-headers. To yank a message from a different folder than the parent of this composition, use M-x vm-yank-message-other-buffer.
C-c C-v <Any VM command key>
All VM commands may be accessed in a VM Mail mode buffer by prefixing them with C-c C-v.
C-c C-a (vm-mime-attach-file)
Attaches a file to the composition. When you send the message, VM will insert the file and MIME encode it. The variable vm-send-using-mime must be set non-nil for this command to work. You will be asked for the file's type, and a brief description of the attachment. The description is optional. If the file's type is a text type, you will also be asked for the character set in which the text should be displayed. The new attachment will appear as a highlighted tag in the composition buffer. You can use mouse button 3 on this tag to set the default content disposition of the attachment. The content disposition gives a hint to the recipient's mailer how to treat the attachment. Specifically the disposition will indicate whether the attachment should be displayed along with the message or saved to a file. Any text in the composition that appears before the tag will appear in a MIME text part before the attachment when the message is encoded and sent. Similarly, any text after the tag will appear after the attachment in the encoded message. If you change your mind about using the attachment, you can remove it from the composition with C-k. If you want to move the attachment to some other part of the message, you can kill it C-k and yank it back with C-y.
C-c C-m (vm-mime-attach-message)
Attaches a mail message to the composition. If invoked with a prefix arg, the name of a folder read from the minibuffer and the message or messages to be attached are copied from that folder. You will be prompted for the message number of the message to be attached. If you invoke the command on marked messages by running vm-next-command-uses-marks first, the marked messages in the selected folder will be attached as a MIME digest.
C-c C-b (vm-mime-attach-buffer)
Attaches an Emacs buffer to the composition.
C-c C-e (vm-mime-encode-composition)
Encodes the composition using MIME, but does not send it. This is useful if you want to use PGP to sign a message before sending it. After signing the message, you would use C-c C-c as usual to send the message. Emacs' undo command can be used to undo the encoding, so that you can continue composing the unencoded message.
C-c C-p (vm-preview-composition)
Previews the current composition. The message is copied into a temporary folder and you can read the message and interact with it using normal VM mode commands to see how it might look to a recipient. Type q to quit the temporary folder and resume composing your message.

The simplest command is m (vm-mail) which sends a mail message much as M-x mail does but allows the added commands described above.

vm-mail can be invoked outside of VM by typing M-x vm-mail. However, only (vm-yank-message-other-folder) will work; all the other commands require a parent folder.

If you send a message and it is returned by the mail system because it was undeliverable, you can resend the message by typing M-r (vm-resend-bounced-message). VM will extract the old message and its pertinent headers from the returned message, and place you in a VM Mail mode buffer. A Resent-To header will be added, which you can fill in with the corrected addresses of the recipients that bounced. You can also added a Resent-Cc header, which has the same meaning as a Cc header in a normal message. Mail will only be sent to the addresses in the Resent-To and Resent-Cc headers unless you delete both of those headers. In that case the To and Cc headers will be used.

MIME Composition

To use VM's MIME composition features, you must have vm-send-using-mime set to a non-nil value. With MIME composition enabled, VM will allow you to add file attachments to your composition and will analyze your message when you send it and MIME encode it as necessary.

To attach a file to your composition, use C-c C-a (vm-mime-attach-file). VM will ask you for the name of the file, its type, a brief description and its character set if it is a text attachment. The attachment will be represented in the composition as a tag line like this

[ATTACHMENT ~/sounds/chronophasia_scream.au, audio/basic]

You can type text before and after this tag and it will appear before or after the text in the final MIME message when VM encodes it. You can kill the tag with C-k and yank it back with C-y to move it to another place in the message. You can yank back the tag multiple times to duplicate the attachment in the message. Or you can leave the tag killed and the attachment won't appear in the message when it is sent.

If you click the right mouse button on the attachment tag, a menu will appear that allows you to change the content disposition of the attachment. The content disposition of a MIME object gives a mail reader a hint as to whether an object should be displayed inline or as an inert tag or button that you must activate in some fashion. Inline display usually means that the object will be display within or alongside the message text, if that is possible. Attachment, when used as a content disposition, means that the object will likely be displayed as a tag. By default, VM specifies an inline disposition for all MIME types except `application' and `model' types.

To attach a buffer instead of a file, use C-c C-b (normally bound to vm-mime-attach-buffer. You must not kill the buffer that you attach until after the message has been sent.

To preview what a MIME message will look like to a recipient, use C-c C-p (vm-mime-preview-composition). VM will encode a copy of the message and present it to you in a temporary mail folder. You can scroll through the message using normal VM mail reading commands. Typing q in this folder will return you to your composition where you can make further changes.

To encode a MIME message without sending it, use C-c C-e (vm-mime-encode-composition). This is useful if you use PGP and want to sign a message before sending it. VM will encode the message for transport, inserting all necessary headers and boundary markers. You can then sign the message and send it with C-c C-c and be confident that VM won't invalidate the signature by making further modifications to the message. Or if you want to resume editing the message you can run the Emacs undo (normally bound to C-x u) command which will revert the encoded MIME bodies back to tags and you can continue entering your composition.

By default, when you type text into a composition buffer VM assumes that if all the character codes are less than 128, you are using the US-ASCII character set and that is the character set declared in the encoding of the message when it is sent. If you are using some other character set, you must specify it by setting the variable vm-mime-7bit-composition-charset. The value of this variable should be a string specifying the character set.

If there are character codes in the composition greater than 128, the variable vm-mime-8bit-composition-charset tells VM what character set to assume when encoding the message. The default is `iso-8859-1'.

Character codes greater than 128 may not be transported reliably across the Internet in mail messages. Some machines will refuse to accept messages containing such characters and some will accept them but zero the eighth bit, garbling the message. To avoid these problems, VM transfer encodes 8-bit text by default.

MIME has two transfer encodings that convert 8-bit data to 7-bit data for safe transport. Quoted-printable leaves the text mostly readable even if the recipient does not have a MIME-capable mail reader. BASE64 is unreadable without a MIME-capable mail reader.

VM's text transfer encoding behavior is controlled by the variable vm-mime-8bit-text-transfer-encoding. Its value should be a symbol that specifies what kind of transfer encoding to do for 8-bit text. A value of `quoted-printable', means to use quoted-printable encoding. A value of `base64' means to use BASE64 encoding. A value of `8bit' means to send the message as is. Note that this variable usually only applies to textual MIME content types. Images, audio, video, etc. typically will have some attribute that makes VM consider them to be "binary", which moves them outside the scope of this variable. For example, messages with line lengths of 1000 characters or more are considered binary, as are messages that contain carriage returns (ASCII code 13) or NULs (ASCII code 0).


VM has special commands that make it easy to reply to a message. When a reply command is invoked, VM fills in the subject and recipient headers for you, since it is apparent to whom the message should be sent and what the subject should be. There is an old convention of prepending the string `"Re: "' to the subject of replies if the string isn't present already. VM supports this indirectly by providing the variable vm-reply-subject-prefix. Its value should be a string to prepend to the subject of replies, if the string isn't present already. A nil value means don't prepend anything to the subject (this is the default). In any case you can edit any of the message headers manually, if you wish.

VM also helps you quote material from a message to which you are replying by providing included text as a feature of some of the commands. Included text is a copy of the message being replied to with some fixed string prepended to each line so that included text can be distinguished from the text of the reply. The variable vm-included-text-prefix specifies what the prepended string will be.

The variable vm-included-text-attribution-format specifies the format for the attribution of included text. This attribution is a line of text that tells who wrote the text that is to be included; it will be inserted before the included text. If non-nil, the value of vm-included-text-attribution-format should be a string format specification similar to vm-summary-format. See section Summaries. A nil value causes the attribution to be omitted.

The variable vm-in-reply-to-format specifies the format of the In-Reply-To header that is inserted into the header section of the reply buffer. Like vm-included-text-attribution-format, vm-in-reply-to-format should be a string similar to that of vm-summary-format. A nil value causes the In-Reply-To header to be omitted.

The recipient headers generated for reply messages are created by copying the appropriate headers from the message to which you are replying. This includes any full name information, comments, etc. in these headers. If the variable vm-strip-reply-headers is non-nil, the recipient headers will be stripped of all information except the actual addresses.

The reply commands are:

r (vm-reply)
Replies to the author of the current message.
R (vm-reply-include-text)
Replies to the author of the current message and provides included text.
f (vm-followup)
Replies to the all recipients of the current message.
F (vm-followup-include-text)
Replies to the all recipients of the current message and provides included text.

These commands all accept a numeric prefix argument n, which if present, causes VM to reply to the next (or previous if the argument is negative) n-1 messages as well as the current message. Also, all the reply commands set the "replied" attribute of the messages to which you are responding, but only when the reply is actually sent. The reply commands can also be applied to marked messages, see section Message Marks.

If you are one of multiple recipients of a message and you use f and F, your address will be included in the recipients of the reply. You can avoid this by judicious use of the variable vm-reply-ignored-addresses. Its value should be a list of regular expressions that match addresses that VM should automatically remove from the recipient headers of replies.

Forwarding Messages

VM has three commands to forward messages: z (vm-forward-message), @ (vm-send-digest) and B (vm-resend-message).

Typing z puts you into a VM Mail mode buffer just like m, except the current message appears as the body of the message in the VM Mail mode buffer. The forwarded message encapsulated as specified by the variable vm-forwarding-digest-type. Recognized values are `"rfc934"', `"rfc1153"' and `"mime"'. If the variable vm-forwarding-subject-format is non-nil it should specify the format of the Subject header of the forwarded message. A nil value causes the Subject header to be left blank. The forwarded message is flagged "forwarded" when the message is sent. The command @ (vm-send-digest) works like z except that a digest of all the messages in the current folder is made and inserted into the VM Mail mode buffer. Also, vm-send-digest can be applied to just marked messages. See section Message Marks. When applied to marked messages, vm-send-digest will only bundle marked messages, as opposed to the usual bundling of all messages in the current folder. The message encapsulation method is specified by the variable vm-digest-send-type, which accepts the same values as vm-forwarding-digest-type. All the messages included in the digest will be flagged "forwarded" when the digest message is sent.

If you give vm-send-digest a prefix argument, VM will insert a list of preamble lines at the beginning of the digest, one line per digestified message. The variable vm-digest-preamble-format determines the format of the preamble lines. If the value of vm-digest-center-preamble is non-nil, the preamble lines will be centered.

If you wish to forward a message and want to send it without the encapsulation used by vm-forward-message, use B (vm-resend-message). Instead of encapsulating the message, VM will use essentially the same message and headers and add a Resent-To header that you should fill in with the new recipients. Use C-c C-c as usual to send the message. The resent message will be flagged as "redistributed".

Go to the first, previous, next, last section, table of contents.