#include "gmime-filter-reply.h"
#include "gmime-filter-headers.h"
+static void
+reply_headers_message_part (GMimeMessage *message);
+
static void
reply_part_content (GMimeObject *part);
static const notmuch_show_format_t format_reply = {
"",
"", NULL,
- "", NULL, "",
+ "", NULL, reply_headers_message_part, ">\n",
"",
NULL,
NULL,
}
}
+static void
+reply_headers_message_part (GMimeMessage *message)
+{
+ InternetAddressList *recipients;
+ const char *recipients_string;
+
+ printf ("> From: %s\n", g_mime_message_get_sender (message));
+ recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_TO);
+ recipients_string = internet_address_list_to_string (recipients, 0);
+ if (recipients_string)
+ printf ("> To: %s\n",
+ recipients_string);
+ recipients = g_mime_message_get_recipients (message, GMIME_RECIPIENT_TYPE_CC);
+ recipients_string = internet_address_list_to_string (recipients, 0);
+ if (recipients_string)
+ printf ("> Cc: %s\n",
+ recipients_string);
+ printf ("> Subject: %s\n", g_mime_message_get_subject (message));
+ printf ("> Date: %s\n", g_mime_message_get_date_as_string (message));
+}
+
+
static void
reply_part_content (GMimeObject *part)
{
if (stream_stdout)
g_object_unref(stream_stdout);
}
+ else if (g_mime_content_type_is_type (content_type, "message", "rfc822"))
+ {
+ /* Output nothing, since rfc822 subparts will be handled individually. */
+ }
else
{
if (disposition &&
* The munging is easy to detect, because it results in a
* redundant reply-to header, (with an address that already exists
* in either To or Cc). So in this case, we ignore the Reply-To
- * field and use the From header. Thie ensures the original sender
+ * field and use the From header. This ensures the original sender
* will get the reply even if not subscribed to the list. Note
* that the address in the Reply-To header will always appear in
* the reply.
* them indications to which email address this message was
* delivered.
* The Received: header is special in our get_header function
- * and is always concated.
+ * and is always concatenated.
*/
received = notmuch_message_get_header (message, "received");
if (received == NULL)
if (strcasestr(primary, domain)) {
free(mta);
- return primary;
- }
- for (i = 0; i < other_len; i++)
- if (strcasestr (other[i],domain)) {
- free(mta);
- return other[i];
+ return primary;
}
+ for (i = 0; i < other_len; i++)
+ if (strcasestr (other[i],domain)) {
+ free(mta);
+ return other[i];
+ }
}
free (mta);
}