notmuch reply: Prefer "Reply-To" header over "From" for choosing recipient.
authorCarl Worth <cworth@cworth.org>
Fri, 13 Nov 2009 18:50:52 +0000 (10:50 -0800)
committerCarl Worth <cworth@cworth.org>
Fri, 13 Nov 2009 18:50:52 +0000 (10:50 -0800)
There are still open questions about how to correctly compute the
intended list of recipients. We'll probably need separate "reply to
sender" and "reply to all" commands at some point (unfortunately).

notmuch-reply.c

index 86e9b3a29b1048b3371b734097cf49477656a2ac..42060665743e24534f0bb8db52e8b8110697f81b 100644 (file)
@@ -182,12 +182,13 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])
     char *reply_headers;
     struct {
        const char *header;
+       const char *fallback;
        GMimeRecipientType recipient_type;
     } reply_to_map[] = {
-       { "from", GMIME_RECIPIENT_TYPE_TO  },
-       { "to",   GMIME_RECIPIENT_TYPE_TO  },
-       { "cc",   GMIME_RECIPIENT_TYPE_CC  },
-       { "bcc",  GMIME_RECIPIENT_TYPE_BCC }
+       { "reply-to", "from", GMIME_RECIPIENT_TYPE_TO  },
+       { "to",         NULL, GMIME_RECIPIENT_TYPE_TO  },
+       { "cc",         NULL, GMIME_RECIPIENT_TYPE_CC  },
+       { "bcc",        NULL, GMIME_RECIPIENT_TYPE_BCC }
     };
     unsigned int i;
 
@@ -235,6 +236,10 @@ notmuch_reply_command (void *ctx, int argc, char *argv[])
 
            recipients = notmuch_message_get_header (message,
                                                     reply_to_map[i].header);
+           if (recipients == NULL && reply_to_map[i].fallback)
+               recipients = notmuch_message_get_header (message,
+                                                        reply_to_map[i].fallback);
+
            addr = add_recipients_for_string (reply, config,
                                              reply_to_map[i].recipient_type,
                                              recipients);