forked from pool/MozillaThunderbird
142 lines
5.6 KiB
Diff
142 lines
5.6 KiB
Diff
Index: mailnews/mailnews.js
|
|
===================================================================
|
|
RCS file: /cvsroot/mozilla/mailnews/mailnews.js,v
|
|
retrieving revision 3.249
|
|
diff -u -r3.249 mailnews.js
|
|
--- mailnews/mailnews.js 9 Aug 2005 00:36:31 -0000 3.249
|
|
+++ mailnews/mailnews.js 15 Aug 2005 01:12:06 -0000
|
|
@@ -196,6 +196,7 @@
|
|
pref("mailnews.reply_header_locale", "");
|
|
pref("mailnews.reply_header_authorwrote", "chrome://messenger/locale/messengercompose/composeMsgs.properties");
|
|
pref("mailnews.reply_header_ondate", "chrome://messenger/locale/messengercompose/composeMsgs.properties");
|
|
+pref("mailnews.clobber_list_reply", false);
|
|
|
|
// separator to separate between date and author
|
|
pref("mailnews.reply_header_separator", ", ");
|
|
--- mailnews/compose/src/nsMsgCompose.cpp.old 2006-08-14 09:32:18.000000000 +0200
|
|
+++ mailnews/compose/src/nsMsgCompose.cpp 2006-08-14 09:44:25.000000000 +0200
|
|
@@ -2106,6 +2106,7 @@ NS_IMETHODIMP QuotingOutputStreamListene
|
|
nsAutoString messageId;
|
|
nsAutoString references;
|
|
nsAutoString listPost;
|
|
+ PRBool clobberListReply = PR_FALSE;
|
|
nsXPIDLCString outCString;
|
|
PRBool needToRemoveDup = PR_FALSE;
|
|
if (!mMimeConverter)
|
|
@@ -2115,6 +2116,77 @@ NS_IMETHODIMP QuotingOutputStreamListene
|
|
}
|
|
nsXPIDLCString charset;
|
|
compFields->GetCharacterSet(getter_Copies(charset));
|
|
+
|
|
+ nsCOMPtr<nsIPrefBranch> prefBranch (do_GetService(NS_PREFSERVICE_CONTRACTID));
|
|
+ if (prefBranch)
|
|
+ prefBranch->GetBoolPref("mailnews.clobber_list_reply", &clobberListReply);
|
|
+
|
|
+ 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 (clobberListReply) {
|
|
+ /* the 'Al fix'. Try to fake up Mail-Reply-To: and Mail-Followup-To: headers if
|
|
+ * we don't have any, and if it looks like it came via a mailing list.
|
|
+ *
|
|
+ * Currently only supports List-Post header.
|
|
+ */
|
|
+
|
|
+ mHeaders->ExtractHeader(HEADER_MAIL_FOLLOWUP_TO, PR_TRUE, getter_Copies(outCString));
|
|
+ if (outCString)
|
|
+ mMimeConverter->DecodeMimeHeader(outCString, mailFollowupTo, charset);
|
|
+
|
|
+ if (mailFollowupTo.IsEmpty()) {
|
|
+ nsAutoString mailingList;
|
|
+
|
|
+ mHeaders->ExtractHeader(HEADER_LIST_POST, PR_TRUE, getter_Copies(outCString));
|
|
+ if (outCString)
|
|
+ {
|
|
+ mMimeConverter->DecodeMimeHeader(outCString, mailingList, charset);
|
|
+ /* s/<mailto:(.*)>/$1/; */
|
|
+ if (StringBeginsWith(mailingList, NS_LITERAL_STRING("<mailto:")) &&
|
|
+ StringEndsWith(mailingList, NS_LITERAL_STRING(">"))) {
|
|
+
|
|
+ mailingList = Substring(mailingList, 8, mailingList.Length() - 9);
|
|
+ }
|
|
+ }
|
|
+
|
|
+ mailFollowupTo = mailingList;
|
|
+ }
|
|
+
|
|
+ if (mailReplyTo.IsEmpty()) {
|
|
+ nsAutoString from;
|
|
+ nsAutoString xReplyTo;
|
|
+
|
|
+ mHeaders->ExtractHeader(HEADER_FROM, PR_FALSE, getter_Copies(outCString));
|
|
+ if (outCString)
|
|
+ {
|
|
+ mMimeConverter->DecodeMimeHeader(outCString, from, charset);
|
|
+ }
|
|
+
|
|
+ mHeaders->ExtractHeader(HEADER_X_REPLY_TO, PR_FALSE, getter_Copies(outCString));
|
|
+ if (outCString)
|
|
+ {
|
|
+ mMimeConverter->DecodeMimeHeader(outCString, xReplyTo, charset);
|
|
+ }
|
|
+
|
|
+ if (replyTo == mailFollowupTo) {
|
|
+ if (!xReplyTo.IsEmpty()) {
|
|
+ mailReplyTo = xReplyTo;
|
|
+ }
|
|
+ else {
|
|
+ mailReplyTo = from;
|
|
+ }
|
|
+ }
|
|
+ else {
|
|
+ mailReplyTo = replyTo;
|
|
+ }
|
|
+ }
|
|
+ }
|
|
|
|
if (type == nsIMsgCompType::ReplyAll)
|
|
{
|
|
@@ -2129,11 +2201,13 @@ NS_IMETHODIMP QuotingOutputStreamListene
|
|
{
|
|
mMimeConverter->DecodeMimeHeader(outCString, cc, charset);
|
|
}
|
|
-
|
|
- mHeaders->ExtractHeader(HEADER_MAIL_FOLLOWUP_TO, PR_TRUE, getter_Copies(outCString));
|
|
- if (outCString)
|
|
- {
|
|
- mMimeConverter->DecodeMimeHeader(outCString, mailFollowupTo, charset);
|
|
+
|
|
+ if (!clobberListReply) { // else we've already looked this up earlier
|
|
+ mHeaders->ExtractHeader(HEADER_MAIL_FOLLOWUP_TO, PR_TRUE, getter_Copies(outCString));
|
|
+ if (outCString)
|
|
+ {
|
|
+ mMimeConverter->DecodeMimeHeader(outCString, mailFollowupTo, charset);
|
|
+ }
|
|
}
|
|
|
|
if (! mailFollowupTo.IsEmpty())
|
|
@@ -2174,18 +2248,6 @@ NS_IMETHODIMP QuotingOutputStreamListene
|
|
}
|
|
}
|
|
|
|
- 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)
|
|
{
|