From 6eceaa4adfa4146e16fb12d90cc0e8ec2b97efac Mon Sep 17 00:00:00 2001 From: "ducarroz%netscape.com" Date: Wed, 6 Nov 2002 00:21:15 +0000 Subject: [PATCH] =?UTF-8?q?Fix=20for=20bug=2099217.=20Need=20to=20save=20t?= =?UTF-8?q?he=20identity=20key=20when=20saving=20a=20draft/template.=20Pat?= =?UTF-8?q?ch=20submitted=20by=20Frank=20Sch=C2=9Anheit.=20R=3Dducarroz,=20SR=3Dbienvenu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: svn://10.0.0.236/trunk@133043 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/mailnews/compose/src/nsMsgSend.cpp | 7 ++++++- mozilla/mailnews/mime/src/mimedrft.cpp | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/mozilla/mailnews/compose/src/nsMsgSend.cpp b/mozilla/mailnews/compose/src/nsMsgSend.cpp index 035592ba237..bf8def7ee8b 100644 --- a/mozilla/mailnews/compose/src/nsMsgSend.cpp +++ b/mozilla/mailnews/compose/src/nsMsgSend.cpp @@ -4326,7 +4326,12 @@ nsMsgComposeAndSend::MimeDoFCC(nsFileSpec *input_file, // Ok, now I want to get the identity key and write it out if this is for a // nsMsgQueueForLater operation! // - if ( (mode == nsMsgQueueForLater) && (mUserIdentity) ) + if ( ( ( nsMsgQueueForLater == mode ) + || ( nsMsgSaveAsDraft == mode ) + || ( nsMsgSaveAsTemplate == mode ) + ) + && ( mUserIdentity ) + ) { char *key = nsnull; diff --git a/mozilla/mailnews/mime/src/mimedrft.cpp b/mozilla/mailnews/mime/src/mimedrft.cpp index bfce5f4fdc0..000f6a451f3 100644 --- a/mozilla/mailnews/mime/src/mimedrft.cpp +++ b/mozilla/mailnews/mime/src/mimedrft.cpp @@ -63,6 +63,8 @@ #include "nsIMIMEService.h" #include "nsIMIMEInfo.h" #include "nsIMsgHeaderParser.h" +#include "nsIMsgAccountManager.h" +#include "nsMsgBaseCID.h" // // Header strings... @@ -1252,6 +1254,7 @@ mime_parse_stream_complete (nsMIMESession *stream) char *foll = 0; char *priority = 0; char *draftInfo = 0; + char *identityKey = 0; PRBool xlate_p = PR_FALSE; /* #### how do we determine this? */ PRBool sign_p = PR_FALSE; /* #### how do we determine this? */ @@ -1415,6 +1418,23 @@ mime_parse_stream_complete (nsMIMESession *stream) } + // identity to prefer when opening the message in the compose window? + identityKey = MimeHeaders_get(mdd->headers, HEADER_X_MOZILLA_IDENTITY_KEY, PR_FALSE, PR_FALSE); + if ( identityKey && *identityKey ) + { + nsresult rv = NS_OK; + nsCOMPtr< nsIMsgAccountManager > accountManager = + do_GetService( NS_MSGACCOUNTMANAGER_CONTRACTID, &rv ); + if ( NS_SUCCEEDED(rv) && accountManager ) + { + nsCOMPtr< nsIMsgIdentity > overrulingIdentity; + rv = accountManager->GetIdentity( identityKey, getter_AddRefs( overrulingIdentity ) ); + + if ( NS_SUCCEEDED(rv) && overrulingIdentity ) + mdd->identity = overrulingIdentity; + } + } + if (mdd->messageBody) { MSG_ComposeFormat composeFormat = nsIMsgCompFormat::Default; @@ -1657,6 +1677,7 @@ mime_parse_stream_complete (nsMIMESession *stream) PR_FREEIF(foll); PR_FREEIF(priority); PR_FREEIF(draftInfo); + PR_Free(identityKey); mime_free_attach_data(newAttachData); }