mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
notmuch reply: Process headers a bit more accurately.
We know take the original From: and all recipients and put them on the To: line. We also add a "Re: " to the subject, and we add In-Reply-To: and References: headers.
This commit is contained in:
parent
54d79f60a1
commit
dfc0780cba
1 changed files with 53 additions and 12 deletions
|
@ -81,13 +81,8 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])
|
||||||
notmuch_messages_t *messages;
|
notmuch_messages_t *messages;
|
||||||
notmuch_message_t *message;
|
notmuch_message_t *message;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int has_recipient;
|
||||||
const char *headers[] = {
|
const char *subject, *to, *references;
|
||||||
"Subject", "From", "To", "Cc", "Bcc", "Date",
|
|
||||||
"In-Reply-To", "References"
|
|
||||||
};
|
|
||||||
const char *name, *value;
|
|
||||||
unsigned int i;
|
|
||||||
|
|
||||||
notmuch = notmuch_database_open (NULL);
|
notmuch = notmuch_database_open (NULL);
|
||||||
if (notmuch == NULL) {
|
if (notmuch == NULL) {
|
||||||
|
@ -115,12 +110,58 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])
|
||||||
{
|
{
|
||||||
message = notmuch_messages_get (messages);
|
message = notmuch_messages_get (messages);
|
||||||
|
|
||||||
for (i = 0; i < ARRAY_SIZE (headers); i++) {
|
subject = notmuch_message_get_header (message, "subject");
|
||||||
name = headers[i];
|
|
||||||
value = notmuch_message_get_header (message, name);
|
/* XXX: Should have the user's email address(es) configured
|
||||||
if (value)
|
* somewhere, and should fish it out of any recipient headers
|
||||||
printf ("%s: %s\n", name, value);
|
* to reply by default from the same address that the original
|
||||||
|
* email was sent to */
|
||||||
|
printf ("From: \n");
|
||||||
|
|
||||||
|
/* XXX: Should fold long recipient lists. */
|
||||||
|
printf ("To:");
|
||||||
|
has_recipient = 0;
|
||||||
|
|
||||||
|
to = notmuch_message_get_header (message, "from");
|
||||||
|
if (to) {
|
||||||
|
printf (" %s", to);
|
||||||
|
has_recipient = 1;
|
||||||
}
|
}
|
||||||
|
to = notmuch_message_get_header (message, "to");
|
||||||
|
if (to) {
|
||||||
|
printf ("%s%s",
|
||||||
|
has_recipient ? ", " : " ", to);
|
||||||
|
has_recipient = 1;
|
||||||
|
}
|
||||||
|
to = notmuch_message_get_header (message, "cc");
|
||||||
|
if (to) {
|
||||||
|
printf ("%s%s",
|
||||||
|
has_recipient ? ", " : " ", to);
|
||||||
|
has_recipient = 1;
|
||||||
|
}
|
||||||
|
to = notmuch_message_get_header (message, "bcc");
|
||||||
|
if (to) {
|
||||||
|
printf ("%s%s",
|
||||||
|
has_recipient ? ", " : " ", to);
|
||||||
|
has_recipient = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf ("\n");
|
||||||
|
|
||||||
|
if (strncasecmp (subject, "Re:", 3))
|
||||||
|
subject = talloc_asprintf (ctx, "Re: %s", subject);
|
||||||
|
printf ("Subject: %s\n", subject);
|
||||||
|
|
||||||
|
printf ("In-Reply-To: <%s>\n",
|
||||||
|
notmuch_message_get_message_id (message));
|
||||||
|
|
||||||
|
/* XXX: Should fold long references lists. */
|
||||||
|
references = notmuch_message_get_header (message, "references");
|
||||||
|
printf ("References: %s <%s>\n",
|
||||||
|
references ? references : "",
|
||||||
|
notmuch_message_get_message_id (message));
|
||||||
|
|
||||||
|
printf ("--text follows this line--\n");
|
||||||
|
|
||||||
show_message_body (notmuch_message_get_filename (message), reply_part);
|
show_message_body (notmuch_message_get_filename (message), reply_part);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue