notmuch/man/man1/notmuch-reply.1
Austin Clements dc51bf0ad4 reply: Use RFC 2822/MIME wholly for text format template
Previously, reply's default text format used an odd mix of RFC 2045
MIME encoding for the reply template's body and some made-up RFC
2822-like UTF-8 format for the headers.  The intent was to present the
headers to the user in a nice, un-encoded format, but this assumed
that whatever ultimately sent the email would RFC 2047-encode the
headers, while at the same time the body was already RFC 2045 encoded,
so it assumed that whatever sent the email would *not* re-encode the
body.

This can be fixed by either producing a fully decoded UTF-8 reply
template, or a fully encoded MIME-compliant RFC 2822 message.  This
patch does the latter because it is

a) Well-defined by RFC 2822 and MIME (while any UTF-8 format would be
   ad hoc).

b) Ready to be piped to sendmail.  The point of the text format is to
   be minimal, so a user should be able to pop up the template in
   whatever editor they want, edit it, and push it to sendmail.

c) Consistent with frontend capabilities.  If a frontend has the
   smarts to RFC 2047 encode the headers before sending the mail, it
   probably has the smarts to RFC 2047 decode them before presenting
   the template to a user for editing.

Also, as far as I know, nothing automated consumes the reply text
format, so changing this should not cause serious problems.  (And if
anything does still consume this format, it probably gets these
encoding issues wrong anyway.)
2013-08-17 09:06:08 +02:00

133 lines
3.8 KiB
Groff

.TH NOTMUCH-REPLY 1 2013-08-03 "Notmuch 0.16"
.SH NAME
notmuch-reply \- constructs a reply template for a set of messages
.SH SYNOPSIS
.B notmuch reply
.RI "[" options "...] <" search-term ">..."
.SH DESCRIPTION
Constructs a reply template for a set of messages.
To make replying to email easier,
.B notmuch reply
takes an existing set of messages and constructs a suitable mail
template. The Reply-to: header (if any, otherwise From:) is used for
the To: address. Unless
.BR \-\-reply-to=sender
is specified, values from the To: and Cc: headers are copied, but not
including any of the current user's email addresses (as configured in
primary_mail or other_email in the .notmuch\-config file) in the
recipient list.
It also builds a suitable new subject, including Re: at the front (if
not already present), and adding the message IDs of the messages being
replied to to the References list and setting the In\-Reply\-To: field
correctly.
Finally, the original contents of the emails are quoted by prefixing
each line with '> ' and included in the body.
The resulting message template is output to stdout.
Supported options for
.B reply
include
.RS
.TP 4
.BR \-\-format= ( default | json | sexp | headers\-only )
.RS
.TP 4
.BR default
Includes subject and quoted message body as an RFC 2822 message.
.TP
.BR json
Produces JSON output containing headers for a reply message and the
contents of the original message. This output can be used by a client
to create a reply message intelligently.
.TP
.BR sexp
Produces S-Expression output containing headers for a reply message and
the contents of the original message. This output can be used by a client
to create a reply message intelligently.
.TP
.BR headers\-only
Only produces In\-Reply\-To, References, To, Cc, and Bcc headers.
.RE
.RE
.RS
.TP 4
.BR \-\-format-version=N
Use the specified structured output format version. This is intended
for programs that invoke \fBnotmuch\fR(1) internally. If omitted, the
latest supported version will be used.
.RE
.RS
.TP 4
.BR \-\-reply\-to= ( all | sender )
.RS
.TP 4
.BR all " (default)"
Replies to all addresses.
.TP 4
.BR sender
Replies only to the sender. If replying to user's own message
(Reply-to: or From: header is one of the user's configured email
addresses), try To:, Cc:, and Bcc: headers in this order, and copy
values from the first that contains something other than only the
user's addresses.
.RE
.RE
.RS
.TP 4
.B \-\-decrypt
Decrypt any MIME encrypted parts found in the selected content
(ie. "multipart/encrypted" parts). Status of the decryption will be
reported (currently only supported with --format=json and
--format=sexp) and on successful decryption the multipart/encrypted
part will be replaced by the decrypted content.
Decryption expects a functioning \fBgpg-agent\fR(1) to provide any
needed credentials. Without one, the decryption will fail.
.RE
See \fBnotmuch-search-terms\fR(7)
for details of the supported syntax for <search-terms>.
Note: It is most common to use
.B "notmuch reply"
with a search string matching a single message, (such as
id:<message-id>), but it can be useful to reply to several messages at
once. For example, when a series of patches are sent in a single
thread, replying to the entire thread allows for the reply to comment
on issues found in multiple patches. The default format supports
replying to multiple messages at once, but the JSON and S-Expression
formats do not.
.RE
.RE
.SH EXIT STATUS
This command supports the following special exit status codes
.TP
.B 20
The requested format version is too old.
.TP
.B 21
The requested format version is too new.
.SH SEE ALSO
\fBnotmuch\fR(1), \fBnotmuch-config\fR(1), \fBnotmuch-count\fR(1),
\fBnotmuch-dump\fR(1), \fBnotmuch-hooks\fR(5),
\fBnotmuch-insert\fR(1), \fBnotmuch-new\fR(1),
\fBnotmuch-restore\fR(1), \fBnotmuch-search\fR(1),
\fBnotmuch-search-terms\fR(7), \fBnotmuch-show\fR(1),
\fBnotmuch-tag\fR(1)