diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/mail3PaneWindowCommands.js thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mail3PaneWindowCommands.js --- thunderbird-1.5.0.5/mozilla/mail/base/content/mail3PaneWindowCommands.js 2005-07-13 22:39:05.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mail3PaneWindowCommands.js 2006-07-27 10:20:48.489275945 +0100 @@ -151,8 +151,10 @@ case "cmd_replySender": case "cmd_replyGroup": case "cmd_replyall": case "button_replyall": + case "cmd_replyList": + case "button_replyList": case "cmd_forward": case "button_forward": case "cmd_forwardInline": case "cmd_forwardAttachment": @@ -290,8 +292,10 @@ case "cmd_replySender": case "cmd_replyGroup": case "cmd_replyall": case "button_replyall": + case "cmd_replyList": + case "button_replyList": case "cmd_forward": case "button_forward": case "cmd_forwardInline": case "cmd_forwardAttachment": @@ -461,8 +465,11 @@ break; case "cmd_replyall": MsgReplyToAllMessage(null); break; + case "cmd_replyList": + MsgReplyToListMessage(null); + break; case "cmd_forward": MsgForwardMessage(null); break; case "cmd_forwardInline": diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/mailCommands.js thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailCommands.js --- thunderbird-1.5.0.5/mozilla/mail/base/content/mailCommands.js 2005-10-04 04:22:35.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailCommands.js 2006-07-27 10:20:48.491275587 +0100 @@ -259,9 +259,9 @@ if ((messageIDScheme == 'http' || messageIDScheme == 'https') && "openComposeWindowForRSSArticle" in this) openComposeWindowForRSSArticle(messageID, hdr, type); else if (type == msgComposeType.Reply || type == msgComposeType.ReplyAll || type == msgComposeType.ForwardInline || type == msgComposeType.ReplyToGroup || type == msgComposeType.ReplyToSender || - type == msgComposeType.ReplyToSenderAndGroup || + type == msgComposeType.ReplyToSenderAndGroup || type == msgComposeType.ReplyToList || type == msgComposeType.Template || type == msgComposeType.Draft) { msgComposeService.OpenComposeWindow(null, messageUri, type, format, identity, msgWindow); //limit the number of new compose windows to 8. Why 8? I like that number :-) diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/mailContextMenus.js thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailContextMenus.js --- thunderbird-1.5.0.5/mozilla/mail/base/content/mailContextMenus.js 2005-02-01 18:04:16.000000000 +0000 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailContextMenus.js 2006-07-27 10:20:48.621252337 +0100 @@ -123,8 +123,9 @@ SetupReplyToSenderMenuItem("threadPaneContext-replySender", numSelected, false); SetupReplyToNewsgroupMenuItem("threadPaneContext-replyNewsgroup", numSelected, isNewsgroup, false); SetupReplyAllMenuItem("threadPaneContext-replyAll", numSelected, false); + SetupReplyToListMenuItem("threadPaneContext-replyList", numSelected, false); SetupForwardMenuItem("threadPaneContext-forward", numSelected, false); SetupForwardAsAttachmentMenuItem("threadPaneContext-forwardAsAttachment", numSelected, false); ShowMenuItem("threadPaneContext-sep-reply", true); @@ -179,8 +180,14 @@ ShowMenuItem(menuID, (numSelected <= 1) && !forceHide); EnableMenuItem(menuID, (numSelected == 1)); } +function SetupReplyToListMenuItem(menuID, numSelected, forceHide) +{ + ShowMenuItem(menuID, (numSelected <= 1) && !forceHide); + EnableMenuItem(menuID, (numSelected == 1)); +} + function SetupForwardMenuItem(menuID, numSelected, forceHide) { ShowMenuItem(menuID, (numSelected <= 1) && !forceHide); EnableMenuItem(menuID, (numSelected > 0)); @@ -474,8 +481,9 @@ SetupEditAsNewMenuItem("messagePaneContext-editAsNew", numSelected, (numSelected == 0 || hideMailItems)); SetupReplyToSenderMenuItem("messagePaneContext-replySender", numSelected, (numSelected == 0 || hideMailItems)); SetupReplyToNewsgroupMenuItem("messagePaneContext-replyNewsgroup", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); SetupReplyAllMenuItem("messagePaneContext-replyAll" , numSelected, (numSelected == 0 || hideMailItems)); + SetupReplyToListMenuItem("messagePaneContext-replyList" , numSelected, (numSelected == 0 || hideMailItems)); SetupForwardMenuItem("messagePaneContext-forward", numSelected, (numSelected == 0 || hideMailItems)); SetupCopyMessageUrlMenuItem("messagePaneContext-copyMessageUrl", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); SetupCopyMenuItem("messagePaneContext-copyMenu", numSelected, (numSelected == 0 || hideMailItems)); SetupMoveMenuItem("messagePaneContext-moveMenu", numSelected, isNewsgroup, (numSelected == 0 || hideMailItems)); diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/mailWindowOverlay.js thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailWindowOverlay.js --- thunderbird-1.5.0.5/mozilla/mail/base/content/mailWindowOverlay.js 2006-05-01 23:17:22.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailWindowOverlay.js 2006-07-27 10:20:48.688240354 +0100 @@ -953,8 +953,18 @@ (event && event.shiftKey) ? msgComposeFormat.OppositeOfDefault : msgComposeFormat.Default, loadedFolder, messageArray); } +function MsgReplyToListMessage(event) +{ + var loadedFolder = GetLoadedMsgFolder(); + var messageArray = GetSelectedMessages(); + + ComposeMessage(msgComposeType.ReplyToList, + (event && event.shiftKey) ? msgComposeFormat.OppositeOfDefault : msgComposeFormat.Default, + loadedFolder, messageArray); +} + function MsgForwardMessage(event) { var forwardType = 0; try { diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/mailWindowOverlay.xul thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailWindowOverlay.xul --- thunderbird-1.5.0.5/mozilla/mail/base/content/mailWindowOverlay.xul 2005-10-24 05:01:20.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/mailWindowOverlay.xul 2006-07-27 10:20:48.759227656 +0100 @@ -215,8 +215,9 @@ + @@ -233,8 +234,9 @@ oncommandupdate="goUpdateMailMenuItems(this)"> + @@ -351,8 +353,9 @@ + @@ -437,8 +440,12 @@ + @@ -774,8 +781,12 @@ + @@ -1416,8 +1427,12 @@ + @@ -1806,8 +1821,9 @@ + + defaultset="button-getmsg,button-newmsg,button-address,spacer,button-reply,button-replyall,button-replyList,button-forward,spacer,button-delete,button-junk,spacer,button-print,button-stop,spring,throbber-box"> #else - defaultset="button-getmsg,button-newmsg,button-address,separator,button-reply,button-replyall,button-forward,separator,button-delete,button-junk,separator,button-print,button-stop,spring,throbber-box"> + defaultset="button-getmsg,button-newmsg,button-address,separator,button-reply,button-replyall,button-replyList,button-forward,separator,button-delete,button-junk,separator,button-print,button-stop,spring,throbber-box"> #endif diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/base/content/messageWindow.js thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/messageWindow.js --- thunderbird-1.5.0.5/mozilla/mail/base/content/messageWindow.js 2005-10-04 04:22:35.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/base/content/messageWindow.js 2006-07-27 10:20:48.827215494 +0100 @@ -767,8 +767,10 @@ case "cmd_replySender": case "cmd_replyGroup": case "cmd_replyall": case "button_replyall": + case "cmd_replyList": + case "button_replyList": case "cmd_forward": case "button_forward": case "cmd_forwardInline": case "cmd_forwardAttachment": @@ -828,8 +830,10 @@ case "cmd_replySender": case "cmd_replyGroup": case "cmd_replyall": case "button_replyall": + case "cmd_replyList": + case "button_replyList": case "cmd_forward": case "button_forward": case "cmd_forwardInline": case "cmd_forwardAttachment": @@ -940,8 +944,11 @@ break; case "cmd_replyall": MsgReplyToAllMessage(null); break; + case "cmd_replyList": + MsgReplyToListMessage(null); + break; case "cmd_forward": MsgForwardMessage(null); break; case "cmd_forwardInline": diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/locales/en-US/chrome/messenger/messenger.dtd thunderbird-1.5.0.5+reply-list/mozilla/mail/locales/en-US/chrome/messenger/messenger.dtd --- thunderbird-1.5.0.5/mozilla/mail/locales/en-US/chrome/messenger/messenger.dtd 2005-09-03 00:38:53.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/locales/en-US/chrome/messenger/messenger.dtd 2006-07-28 10:18:20.902074832 +0100 @@ -296,8 +296,11 @@ + + + @@ -422,8 +425,9 @@ + @@ -443,8 +447,9 @@ + @@ -567,8 +572,10 @@ + + diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/themes/pinstripe/mail/jar.mn thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/pinstripe/mail/jar.mn --- thunderbird-1.5.0.5/mozilla/mail/themes/pinstripe/mail/jar.mn 2005-10-13 00:03:42.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/pinstripe/mail/jar.mn 2006-07-27 18:01:02.629126075 +0100 @@ -133,8 +133,10 @@ skin/classic/messenger/icons/mail-16.png (icons/mail-16.png) skin/classic/messenger/icons/mail-options.png (icons/mail-options.png) skin/classic/messenger/icons/mail-toolbar-small.png (icons/mail-toolbar-small.png) skin/classic/messenger/icons/mail-toolbar.png (icons/mail-toolbar.png) + skin/classic/messenger/icons/mail-replylist-small.png (icons/mail-replylist-small.png) + skin/classic/messenger/icons/mail-replylist.png (icons/mail-replylist.png) skin/classic/messenger/icons/mailPaneConfig.png (icons/mailPaneConfig.png) skin/classic/messenger/icons/message-mail-attach-offl.png (icons/message-mail-attach-offl.png) skin/classic/messenger/icons/message-mail-attach.png (icons/message-mail-attach.png) skin/classic/messenger/icons/message-mail-imapdel-offl.png (icons/message-mail-imapdel-offl.png) diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/themes/pinstripe/mail/primaryToolbar.css thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/pinstripe/mail/primaryToolbar.css --- thunderbird-1.5.0.5/mozilla/mail/themes/pinstripe/mail/primaryToolbar.css 2005-06-16 03:32:12.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/pinstripe/mail/primaryToolbar.css 2006-07-27 10:20:48.965190813 +0100 @@ -124,8 +124,23 @@ #button-reply[disabled] { -moz-image-region: rect(64px 128px 96px 96px) !important; } +#button-replyList { + -moz-box-orient: vertical; + min-width: 0px; + list-style-image: url("chrome://messenger/skin/icons/mail-replylist.png"); + -moz-image-region: rect(0px 32px 32px 0px); +} + +#button-replyList:hover:active { + -moz-image-region: rect(32px 32px 64px 0px); +} + +#button-replyList[disabled] { + -moz-image-region: rect(64px 32px 96px 0px) !important; +} + #button-replyall { -moz-image-region: rect(0px 160px 32px 128px); } @@ -305,8 +320,23 @@ toolbar[iconsize="small"] #button-reply[disabled] { -moz-image-region: rect(48px 96px 72px 72px) !important; } +toolbar[iconsize="small"] #button-replyList { + -moz-box-orient: vertical; + min-width: 0px; + list-style-image: url("chrome://messenger/skin/icons/mail-replylist-small.png"); + -moz-image-region: rect(0px 24px 24px 0px); +} + +toolbar[iconsize="small"] #button-replyList:hover:active { + -moz-image-region: rect(24px 24px 48px 0px); +} + +toolbar[iconsize="small"] #button-replyList[disabled] { + -moz-image-region: rect(48px 24px 72px 0px) !important; +} + toolbar[iconsize="small"] #button-replyall { -moz-image-region: rect(0px 120px 24px 96px); } diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/themes/qute/mail/jar.mn thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/qute/mail/jar.mn --- thunderbird-1.5.0.5/mozilla/mail/themes/qute/mail/jar.mn 2005-08-04 23:14:30.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/qute/mail/jar.mn 2006-07-27 18:00:21.352225429 +0100 @@ -72,8 +72,10 @@ skin/classic/messenger/icons/new-mail-alert.png (icons/new-mail-alert.png) skin/classic/messenger/icons/readmail.gif (icons/readmail.gif) skin/classic/messenger/icons/mail-toolbar.png (icons/mail-toolbar.png) skin/classic/messenger/icons/mail-toolbar-small.png (icons/mail-toolbar-small.png) + skin/classic/messenger/icons/mail-replylist.png (icons/mail-replylist.png) + skin/classic/messenger/icons/mail-replylist-small.png (icons/mail-replylist-small.png) skin/classic/messenger/icons/throbber.png (icons/throbber.png) skin/classic/messenger/icons/throbber.gif (icons/throbber.gif) skin/classic/messenger/icons/throbber-small.gif (icons/throbber-small.gif) skin/classic/messenger/icons/throbber-small.png (icons/throbber-small.png) diff -U4 -r thunderbird-1.5.0.5/mozilla/mail/themes/qute/mail/primaryToolbar.css thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/qute/mail/primaryToolbar.css --- thunderbird-1.5.0.5/mozilla/mail/themes/qute/mail/primaryToolbar.css 2005-10-15 01:48:25.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mail/themes/qute/mail/primaryToolbar.css 2006-07-27 10:20:49.032178810 +0100 @@ -51,12 +51,20 @@ .toolbarbutton-1[type="menu"] > .toolbarbutton-menu-dropmarker { display: none; } +.toolbarbutton-2[type="menu"] > .toolbarbutton-menu-dropmarker { + display: none; +} + toolbar[mode="full"] .toolbarbutton-1 { min-width: 47px; } +toolbar[mode="full"] .toolbarbutton-2 { + min-width: 47px; +} + toolbar[mode="icons"] .toolbarbutton-text { display: none; } @@ -116,8 +124,23 @@ #button-reply[disabled] { -moz-image-region: rect(48px 96px 72px 72px) !important; } +#button-replyList { + -moz-box-orient: vertical; + min-width: 0px; + list-style-image: url("chrome://messenger/skin/icons/mail-replylist.png"); + -moz-image-region: rect(0px 24px 24px 0px); +} + +#button-replyList:hover { + -moz-image-region: rect(24px 24px 48px 0px); +} + +#button-replyList[disabled] { + -moz-image-region: rect(48px 24px 72px 0px) !important; +} + #button-replyall { -moz-image-region: rect(0px 120px 24px 96px); } @@ -292,8 +315,23 @@ toolbar[iconsize="small"] #button-reply[disabled] { -moz-image-region: rect(32px 64px 48px 48px) !important; } +toolbar[iconsize="small"] #button-replyList { + -moz-box-orient: vertical; + min-width: 0px; + list-style-image: url("chrome://messenger/skin/icons/mail-replylist-small.png"); + -moz-image-region: rect(0px 16px 16px 0px); +} + +toolbar[iconsize="small"] #button-replyList:hover { + -moz-image-region: rect(16px 16px 32px 0px); +} + +toolbar[iconsize="small"] #button-replyList[disabled] { + -moz-image-region: rect(32px 16px 48px 0px) !important; +} + toolbar[iconsize="small"] #button-replyall { -moz-image-region: rect(0px 80px 16px 64px); } diff -U4 -r thunderbird-1.5.0.5/mozilla/mailnews/compose/public/nsIMsgComposeParams.idl thunderbird-1.5.0.5+reply-list/mozilla/mailnews/compose/public/nsIMsgComposeParams.idl --- thunderbird-1.5.0.5/mozilla/mailnews/compose/public/nsIMsgComposeParams.idl 2005-10-04 04:10:45.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mailnews/compose/public/nsIMsgComposeParams.idl 2006-07-27 10:20:49.034178451 +0100 @@ -58,8 +58,9 @@ const long Draft = 9; const long Template = 10; const long MailToUrl = 11; const long ReplyWithTemplate = 12; + const long ReplyToList = 13; }; typedef long MSG_ComposeFormat; diff -U4 -r thunderbird-1.5.0.5/mozilla/mailnews/compose/src/nsMsgCompose.cpp thunderbird-1.5.0.5+reply-list/mozilla/mailnews/compose/src/nsMsgCompose.cpp --- thunderbird-1.5.0.5/mozilla/mailnews/compose/src/nsMsgCompose.cpp 2006-06-21 00:52:53.000000000 +0100 +++ thunderbird-1.5.0.5+reply-list/mozilla/mailnews/compose/src/nsMsgCompose.cpp 2006-08-19 13:37:50.135832130 +0100 @@ -1711,8 +1711,9 @@ switch (type) { default: break; case nsIMsgCompType::Reply : + case nsIMsgCompType::ReplyToList: case nsIMsgCompType::ReplyAll: case nsIMsgCompType::ReplyToGroup: case nsIMsgCompType::ReplyToSender: case nsIMsgCompType::ReplyToSenderAndGroup: @@ -2082,8 +2083,9 @@ if (!mCiteReference.IsEmpty()) compose->SetCiteReference(mCiteReference); if (mHeaders && (type == nsIMsgCompType::Reply || type == nsIMsgCompType::ReplyAll || type == nsIMsgCompType::ReplyToSender || + type == nsIMsgCompType::ReplyToList || type == nsIMsgCompType::ReplyToGroup || type == nsIMsgCompType::ReplyToSenderAndGroup) && mQuoteOriginal) { nsCOMPtr compFields; compose->GetCompFields(getter_AddRefs(compFields)); @@ -2094,8 +2096,9 @@ nsAutoString cc; nsAutoString replyTo; nsAutoString mailReplyTo; nsAutoString mailFollowupTo; + nsAutoString listPost; nsAutoString newgroups; nsAutoString followUpTo; nsAutoString messageId; nsAutoString references; @@ -2108,8 +2111,73 @@ } nsXPIDLCString charset; compFields->GetCharacterSet(getter_Copies(charset)); + mHeaders->ExtractHeader(HEADER_REPLY_TO, PR_FALSE, getter_Copies(outCString)); + if (outCString) + { + mMimeConverter->DecodeMimeHeader(outCString, replyTo, charset); + } + + mHeaders->ExtractHeader(HEADER_MAIL_REPLY_TO, PR_TRUE, getter_Copies(outCString)); + if (outCString) + { + mMimeConverter->DecodeMimeHeader(outCString, mailReplyTo, charset); + } + + if (type == nsIMsgCompType::ReplyToList) + { + nsAutoString tmpListPost; + PRBool listPostOk = PR_FALSE; + + mHeaders->ExtractHeader(HEADER_LIST_POST, PR_TRUE, getter_Copies(outCString)); + if (outCString) + { + mMimeConverter->DecodeMimeHeader(outCString, tmpListPost, charset); + if (! tmpListPost.IsEmpty() && StringBeginsWith(tmpListPost, NS_LITERAL_STRING(" + else if (pos == 1 && *substr_start == '>') pos++; + else if (pos == 1) listPost += *substr_start; + substr_start++; + } + if (pos == 2) listPostOk = PR_TRUE; + } + } + + mHeaders->ExtractHeader(HEADER_MAIL_FOLLOWUP_TO, PR_TRUE, getter_Copies(outCString)); + if (outCString) + { + mMimeConverter->DecodeMimeHeader(outCString, mailFollowupTo, charset); + } + + if (listPostOk && ! listPost.IsEmpty()) + { + compFields->SetTo(listPost); + + if (! mailFollowupTo.IsEmpty()) + { // handle Mail-Followup-To (http://cr.yp.to/proto/replyto.html) + compFields->SetCc(mailFollowupTo); + } + } + else if (! mailFollowupTo.IsEmpty()) + { + type = nsIMsgCompType::ReplyAll; + } + else + { + type = nsIMsgCompType::Reply; + } + + needToRemoveDup = PR_TRUE; + } + if (type == nsIMsgCompType::ReplyAll) { mHeaders->ExtractHeader(HEADER_TO, PR_TRUE, getter_Copies(outCString)); if (outCString) @@ -2142,20 +2210,8 @@ } needToRemoveDup = PR_TRUE; } - - mHeaders->ExtractHeader(HEADER_REPLY_TO, PR_FALSE, getter_Copies(outCString)); - if (outCString) - { - mMimeConverter->DecodeMimeHeader(outCString, replyTo, charset); - } - - mHeaders->ExtractHeader(HEADER_MAIL_REPLY_TO, PR_TRUE, getter_Copies(outCString)); - if (outCString) - { - mMimeConverter->DecodeMimeHeader(outCString, mailReplyTo, charset); - } mHeaders->ExtractHeader(HEADER_NEWSGROUPS, PR_FALSE, getter_Copies(outCString)); if (outCString) { @@ -2179,9 +2235,10 @@ { mMimeConverter->DecodeMimeHeader(outCString, references, charset); } - if (! ((type == nsIMsgCompType::ReplyAll) && ! mailFollowupTo.IsEmpty())) + if (! ((type == nsIMsgCompType::ReplyAll) && ! mailFollowupTo.IsEmpty()) + && ! (type == nsIMsgCompType::ReplyToList)) { if (! mailReplyTo.IsEmpty()) { // handle Mail-Reply-To (http://cr.yp.to/proto/replyto.html) compFields->SetTo(mailReplyTo); diff -U4 -r thunderbird-1.5.0.5/mozilla/mailnews/mime/public/nsMailHeaders.h thunderbird-1.5.0.5+reply-list/mozilla/mailnews/mime/public/nsMailHeaders.h --- thunderbird-1.5.0.5/mozilla/mailnews/mime/public/nsMailHeaders.h 2005-02-28 17:10:57.000000000 +0000 +++ thunderbird-1.5.0.5+reply-list/mozilla/mailnews/mime/public/nsMailHeaders.h 2006-07-27 10:20:49.174153320 +0100 @@ -62,12 +62,13 @@ #define HEADER_DISTRIBUTION "Distribution" #define HEADER_FCC "FCC" #define HEADER_FOLLOWUP_TO "Followup-To" #define HEADER_FROM "From" -#define HEADER_STATUS "Status" +#define HEADER_STATUS "Status" #define HEADER_LINES "Lines" +#define HEADER_LIST_POST "List-Post" #define HEADER_MAIL_FOLLOWUP_TO "Mail-Followup-To" -#define HEADER_MAIL_REPLY_TO "Mail-Reply-To" +#define HEADER_MAIL_REPLY_TO "Mail-Reply-To" #define HEADER_MESSAGE_ID "Message-ID" #define HEADER_MIME_VERSION "MIME-Version" #define HEADER_NEWSGROUPS "Newsgroups" #define HEADER_ORGANIZATION "Organization"