Backed out changesets cf87c5c76627 and 1ab1fff092a5 (bug 802266) for bustage.
authorRyan VanderMeulen <ryanvm@gmail.com>
Tue, 25 Mar 2014 12:36:11 -0400
changeset 20237 13a79c6de877329af078eb6eb97362a001218402
parent 20236 ec45d32bc40505afaff00cea374dc3ce10aa31aa
child 20238 f1199b0e2cf38a176bd7662cf67e298efb734f7f
push id194
push usermbanner@mozilla.com
push dateThu, 17 Jul 2014 13:25:17 +0000
bugs802266
backs outcf87c5c76627761d0d9f366e5834ac766a342cd7
1ab1fff092a5273a2687416a776fab1ef063b1ea
Backed out changesets cf87c5c76627 and 1ab1fff092a5 (bug 802266) for bustage. CLOSED TREE
mail/locales/en-US/chrome/messenger/messengercompose/composeMsgs.properties
mailnews/compose/src/nsComposeStrings.h
mailnews/compose/src/nsMsgAttachmentHandler.cpp
mailnews/compose/src/nsMsgCompUtils.cpp
mailnews/compose/src/nsMsgSend.cpp
mailnews/compose/src/nsMsgSendReport.cpp
mailnews/compose/src/nsSmtpProtocol.cpp
mailnews/compose/src/nsSmtpProtocol.h
mailnews/extensions/mdn/src/nsMsgMdnGenerator.cpp
suite/locales/en-US/chrome/mailnews/compose/composeMsgs.properties
--- a/mail/locales/en-US/chrome/messenger/messengercompose/composeMsgs.properties
+++ b/mail/locales/en-US/chrome/messenger/messengercompose/composeMsgs.properties
@@ -11,19 +11,34 @@ unableToOpenFile=Unable to open the file
 unableToOpenTmpFile=Unable to open the temporary file %S. Check your 'Temporary Directory' setting.
 
 ## @name NS_MSG_UNABLE_TO_SAVE_TEMPLATE
 12502=Unable to save your message as template.
 
 ## @name NS_MSG_UNABLE_TO_SAVE_DRAFT
 12503=Unable to save your message as draft.
 
+## @name NS_MSG_LOAD_ATTACHMNTS
+12504=Loading attachments…
+
+## @name NS_MSG_LOAD_ATTACHMNT
+12505=Loading attachment…
+
 ## @name NS_MSG_COULDNT_OPEN_FCC_FOLDER
 12506=Couldn't open Sent Mail folder. Please verify that your Mail preferences are correct.
 
+## @name NS_MSG_CANT_POST_TO_MULTIPLE_NEWS_HOSTS
+12507=Can't post to multiple news hosts. Try again.
+
+## @name NS_MSG_ASSEMB_DONE_MSG
+12508=Assembling message…Done
+
+## @name NS_MSG_ASSEMBLING_MSG
+12509=Assembling message…
+
 ## @name NS_MSG_NO_SENDER
 12510=No sender was specified. Please fill in your email address in the Mail & Newsgroups account settings.
 
 ## @name NS_MSG_NO_RECIPIENTS
 12511=No recipients were specified. Please enter a recipient or newsgroup in the addressing area.
 
 ## @name NS_MSG_ERROR_WRITING_FILE
 12512=Error writing temporary file.
@@ -41,16 +56,25 @@ 12517=An error occurred while sending ma
 12518=The message could not be posted because connecting to the news server failed. The server may be unavailable or is refusing connections. Please verify that your news server settings are correct and try again, or else contact your network administrator.
 
 ## @name NS_ERROR_QUEUED_DELIVERY_FAILED
 12519=An error occurred delivering unsent messages.
 
 ## @name NS_ERROR_SEND_FAILED
 12520=Sending of message failed.
 
+## @name SMTP_DELIV_MAIL
+12521=Delivering mail…
+
+## @name SMTP_MESSAGE_SENT_WAITING_MAIL_REPLY
+12522=Mail: Message sent; waiting for reply…
+
+## @name SMTP_PROGRESS_MAILSENT
+12523=Mail sent successfully
+
 ## @name NS_ERROR_SMTP_SERVER_ERROR
 12524=An error occurred sending mail: SMTP server error. The server responded:  %s Contact your mail administrator for assistance.
 
 ## @name NS_MSG_UNABLE_TO_SEND_LATER
 12525=Unable to save your message in order to send it later.
 
 ## @name NS_ERROR_COMMUNICATIONS_ERROR
 12526=A communications error occurred: %d.  Please try again.
@@ -65,30 +89,85 @@ 12528=A network error occurred while rec
 12529=An error occurred sending mail:  the return mail address was invalid.  Please verify that your email address is correct in your Mail preferences and try again.
 
 ## @name NS_ERROR_MIME_MPART_ATTACHMENT_ERROR
 12531=Attachment error.
 
 ## @name NS_MSG_FAILED_COPY_OPERATION
 12532=The message was sent successfully, but could not be copied to your Sent folder.
 
+## @name NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SAVING
+12533=There was a problem including the file %.200s in the message. Would you like to continue saving the message without this file?
+
+## @name NS_MSG_ASSEMBLING_MESSAGE
+12534=Assembling mail information…
+
+## @name NS_MSG_GATHERING_ATTACHMENT
+12535=Attaching %s…
+
+## @name NS_MSG_CREATING_MESSAGE
+12536=Creating mail message…
+
+## @name NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SENDING
+12537=There was a problem including the file %.200s in the message. Would you like to continue sending the message without this file?
+
+## @name NS_MSG_START_COPY_MESSAGE
+12538=Copying message to %S folder…
+
+## @name NS_MSG_START_COPY_MESSAGE_COMPLETE
+12539=Copy complete.
+
+## @name NS_MSG_START_COPY_MESSAGE_FAILED
+12540=Copy failed.
+
+## @name NS_MSG_LARGE_MESSAGE_WARNING
+12541=Warning! You are about to send a %d byte message. Are you sure that you want to do this?
+
+## @name NS_MSG_SENDING_MESSAGE
+12550=Sending message…
+
+## @name NS_MSG_POSTING_MESSAGE
+12551=Posting message…
+
 ## @name NS_ERROR_NNTP_NO_CROSS_POSTING
 12554=You can only send a message to one news server at a time.
 
 ## @name NS_MSG_CANCELLING
 12555=Cancelling…
 
+## @name NS_MSG_SEND_ERROR_TITLE
+12556=Send Message Error
+
+## @name NS_MSG_SENDLATER_ERROR_TITLE
+12557=Send Later Error
+
+## @name NS_MSG_SAVE_DRAFT_TITLE
+12558=Save Draft Error
+
+## @name NS_MSG_SAVE_TEMPLATE_TITLE
+12559=Save Template Error
+
 ## @name NS_ERROR_SEND_FAILED_BUT_NNTP_OK
 12560=Your message has been posted to the newsgroup but has not been sent to other recipient.
 
+## @name NS_MSG_ASK_TO_COMEBACK_TO_COMPOSE
+12561=Would you like to return to the compose window?
+
+## @name NS_MSG_GENERIC_FAILURE_EXPLANATION
+12562=Please verify that your Mail & Newsgroups account settings are correct and try again.
+
 ## @name NS_MSG_ERROR_READING_FILE
 12563=Error reading file.
 
 followupToSenderMessage=The author of this message has requested that responses be sent only to the author. If you also want to reply to the newsgroup, add a new row to the addressing area, choose Newsgroup from the recipients list, and enter the name of the newsgroup.
 
+## @name NS_MSG_UNDISCLOSED_RECIPIENTS
+## LOCALIZATION NOTE: this string must be using only US_ASCII characters
+12566=undisclosed-recipients
+
 ## @name NS_MSG_ERROR_ATTACHING_FILE
 12570=There was an error attaching %S. Please check if you have access to the file.
 
 ## @name NS_ERROR_SMTP_GREETING
 12572=An error occurred sending mail: The mail server sent an incorrect greeting:  %s.
 
 ## @name NS_ERROR_SENDING_RCPT_COMMAND
 12575=An error occurred while sending mail. The mail server responded:  %1$s. Please check the message recipient %2$s and try again.
@@ -159,21 +238,16 @@ errorIllegalLocalPart=There are non-ASCI
 saveDlogTitle=Save Message
 ## LOCALIZATION NOTE (SaveDlogMessages): %1$S is folder name
 saveDlogMessages=Message has not been sent. Do you want to save the message in your drafts folder (%1$S)?
 
 ## generics string
 defaultSubject=(no subject)
 chooseFileToAttach=Attach File(s)
 
-genericFailureExplanation=Please verify that your Mail & Newsgroups account settings are correct and try again.
-
-## LOCALIZATION NOTE (undisclosedRecipients): this string must use only US_ASCII characters
-undisclosedRecipients=undisclosed-recipients
-
 # LOCALIZATION NOTE (chooseFileToAttachViaCloud): %1$S is the cloud
 # provider to save the file to.
 chooseFileToAttachViaCloud=Attach File(s) via %1$S
 
 ##
 windowTitlePrefix=Write:
 
 ## Strings used by the empty subject dialog
@@ -230,48 +304,16 @@ quitComposeWindowSaveTitle=Saving Messag
 ## LOCALIZATION NOTE (quitComposeWindowSaveMessage): don't translate \n
 quitComposeWindowSaveMessage=%1$S is currently in the process of saving a message.\nWould you like to wait until the message has been saved before quitting or quit now?
 
 ## Strings used by prompt for Ctrl-Enter check before sending message
 sendMessageCheckWindowTitle=Send Message
 sendMessageCheckLabel=Are you sure you are ready to send this message?
 sendMessageCheckSendButtonLabel=Send
 
-assemblingMessageDone=Assembling message…Done
-assemblingMessage=Assembling message…
-
-smtpDeliveringMail=Delivering mail…
-smtpMailSent=Mail sent successfully
-
-assemblingMailInformation=Assembling mail information…
-## LOCALIZATION NOTE (gatheringAttachment): argument %S is file name/URI of attachment
-gatheringAttachment=Attaching %S…
-creatingMailMessage=Creating mail message…
-
-## LOCALIZATION NOTE (copyMessageStart): argument %S is folder name
-copyMessageStart=Copying message to %S folder…
-copyMessageComplete=Copy complete.
-copyMessageFailed=Copy failed.
-
-sendLargeMessageWarning=Warning! You are about to send a %d byte message. Are you sure that you want to do this?
-
-sendingMessage=Sending message…
-sendMessageErrorTitle=Send Message Error
-postingMessage=Posting message…
-
-sendLaterErrorTitle=Send Later Error
-saveDraftErrorTitle=Save Draft Error
-saveTemplateErrorTitle=Save Template Error
-
-## LOCALIZATION NOTE (failureOnObjectEmbeddingWhileSaving): argument %.200S is file name/URI of object to be embedded
-failureOnObjectEmbeddingWhileSaving=There was a problem including the file %.200S in the message. Would you like to continue saving the message without this file?
-## LOCALIZATION NOTE (failureOnObjectEmbeddingWhileSending): argument %.200S is file name/URI of object to be embedded
-failureOnObjectEmbeddingWhileSending=There was a problem including the file %.200S in the message. Would you like to continue sending the message without this file?
-returnToComposeWindowQuestion=Would you like to return to the compose window?
-
 ## reply header in composeMsg
 ## <author> wrote:
 mailnews.reply_header_authorwrote=%s wrote
 mailnews.reply_header_ondate=On %s
 
 ## reply header in composeMsg
 ## user specified
 mailnews.reply_header_originalmessage=-------- Original Message --------
--- a/mailnews/compose/src/nsComposeStrings.h
+++ b/mailnews/compose/src/nsComposeStrings.h
@@ -1,51 +1,80 @@
 /* This Source Code Form is subject to the terms of the Mozilla Public
  * License, v. 2.0. If a copy of the MPL was not distributed with this
  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
 
 /**
   String Ids used by mailnews\compose
-  To Do: Convert the callers to use names instead of ids and then make this file obsolete.
+  To Do: Conver the callers to use names instead of ids and then make this file obsolete.
  */
  
 #ifndef _nsComposeStrings_H__
 #define _nsComposeStrings_H__
 
 #define NS_MSG_UNABLE_TO_OPEN_FILE                  NS_MSG_GENERATE_FAILURE(12500)
 #define NS_MSG_UNABLE_TO_OPEN_TMP_FILE              NS_MSG_GENERATE_FAILURE(12501)
 #define NS_MSG_UNABLE_TO_SAVE_TEMPLATE              NS_MSG_GENERATE_FAILURE(12502)
 #define NS_MSG_UNABLE_TO_SAVE_DRAFT                 NS_MSG_GENERATE_FAILURE(12503)
+#define NS_MSG_LOAD_ATTACHMNTS                      NS_MSG_GENERATE_SUCCESS(12504)
+#define NS_MSG_LOAD_ATTACHMNT                       NS_MSG_GENERATE_SUCCESS(12505)
 #define NS_MSG_COULDNT_OPEN_FCC_FOLDER              NS_MSG_GENERATE_FAILURE(12506)
+#define NS_MSG_CANT_POST_TO_MULTIPLE_NEWS_HOSTS     NS_MSG_GENERATE_FAILURE(12507)
+#define NS_MSG_ASSEMB_DONE_MSG                      12508
+#define NS_MSG_ASSEMBLING_MSG                       12509
 #define NS_MSG_NO_SENDER                            NS_MSG_GENERATE_FAILURE(12510)
 #define NS_MSG_NO_RECIPIENTS                        NS_MSG_GENERATE_FAILURE(12511)
 #define NS_MSG_ERROR_WRITING_FILE                   NS_MSG_GENERATE_FAILURE(12512)
 #define NS_ERROR_SENDING_FROM_COMMAND               NS_MSG_GENERATE_FAILURE(12514)
 #define NS_ERROR_SENDING_DATA_COMMAND               NS_MSG_GENERATE_FAILURE(12516)
 #define NS_ERROR_SENDING_MESSAGE                    NS_MSG_GENERATE_FAILURE(12517)
 #define NS_ERROR_POST_FAILED                        NS_MSG_GENERATE_FAILURE(12518)
 #define NS_ERROR_QUEUED_DELIVERY_FAILED             NS_MSG_GENERATE_FAILURE(12519)
 #define NS_ERROR_SEND_FAILED                        NS_MSG_GENERATE_FAILURE(12520)
+#define SMTP_DELIV_MAIL                             12521
+#define SMTP_MESSAGE_SENT_WAITING_MAIL_REPLY        NS_MSG_GENERATE_SUCCESS(12522)
+#define SMTP_PROGRESS_MAILSENT                      12523
 #define NS_ERROR_SMTP_SERVER_ERROR                  NS_MSG_GENERATE_FAILURE(12524)
 #define NS_MSG_UNABLE_TO_SEND_LATER                 NS_MSG_GENERATE_FAILURE(12525)
 #define NS_ERROR_COMMUNICATIONS_ERROR               NS_MSG_GENERATE_FAILURE(12526)
 #define NS_ERROR_BUT_DONT_SHOW_ALERT                NS_MSG_GENERATE_FAILURE(12527)
 #define NS_ERROR_TCP_READ_ERROR                     NS_MSG_GENERATE_FAILURE(12528)
 #define NS_ERROR_COULD_NOT_GET_USERS_MAIL_ADDRESS   NS_MSG_GENERATE_FAILURE(12529)
 #define NS_ERROR_MIME_MPART_ATTACHMENT_ERROR        NS_MSG_GENERATE_FAILURE(12531)
 #define NS_MSG_FAILED_COPY_OPERATION                NS_MSG_GENERATE_FAILURE(12532)
+// For message sending operations...
+#define NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SAVING    12533
+#define NS_MSG_ASSEMBLING_MESSAGE                   12534
+#define NS_MSG_GATHERING_ATTACHMENT                 12535
+#define NS_MSG_CREATING_MESSAGE                     12536
+#define NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SENDING   12537
+#define NS_MSG_START_COPY_MESSAGE                   12538
+#define NS_MSG_START_COPY_MESSAGE_COMPLETE          12539
+#define NS_MSG_START_COPY_MESSAGE_FAILED            12540
+#define NS_MSG_LARGE_MESSAGE_WARNING                12541
+
+#define NS_MSG_SENDING_MESSAGE                      12550
+#define NS_MSG_POSTING_MESSAGE                      12551
 
 /* 12554 is taken by NS_ERROR_NNTP_NO_CROSS_POSTING.  use 12555 as the next one */
 
 #define NS_MSG_CANCELLING                           NS_MSG_GENERATE_SUCCESS(12555)
 
-// For message sending report
+// For message sending report...
+#define NS_MSG_SEND_ERROR_TITLE                     12556
+#define NS_MSG_SENDLATER_ERROR_TITLE                12557
+#define NS_MSG_SAVE_DRAFT_TITLE                     12558
+#define NS_MSG_SAVE_TEMPLATE_TITLE                  12559
 #define NS_ERROR_SEND_FAILED_BUT_NNTP_OK            NS_MSG_GENERATE_FAILURE(12560)
+#define NS_MSG_ASK_TO_COMEBACK_TO_COMPOSE           12561
+#define NS_MSG_GENERIC_FAILURE_EXPLANATION          12562
 #define NS_MSG_ERROR_READING_FILE                   NS_MSG_GENERATE_FAILURE(12563)
 
+#define NS_MSG_UNDISCLOSED_RECIPIENTS               12566
+
 #define NS_MSG_ERROR_ATTACHING_FILE                 NS_MSG_GENERATE_FAILURE(12570)
 
 #define NS_ERROR_SMTP_GREETING                      NS_MSG_GENERATE_FAILURE(12572)
 
 #define NS_ERROR_SENDING_RCPT_COMMAND               NS_MSG_GENERATE_FAILURE(12575)
 
 #define NS_ERROR_STARTTLS_FAILED_EHLO_STARTTLS      NS_MSG_GENERATE_FAILURE(12582)
 
--- a/mailnews/compose/src/nsMsgAttachmentHandler.cpp
+++ b/mailnews/compose/src/nsMsgAttachmentHandler.cpp
@@ -1025,53 +1025,49 @@ nsMsgAttachmentHandler::UrlExit(nsresult
   if (NS_FAILED(status) && status != NS_ERROR_ABORT && NS_SUCCEEDED(mimeDeliveryStatus))
   {
     // At this point, we should probably ask a question to the user
     // if we should continue without this attachment.
     //
     bool              keepOnGoing = true;
     nsCString    turl;
     nsString     msg;
+    char16_t         *printfString = nullptr;
     nsresult rv;
     nsCOMPtr<nsIStringBundleService> bundleService =
       mozilla::services::GetStringBundleService();
     NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
     nsCOMPtr<nsIStringBundle> bundle;
     rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(bundle));
     NS_ENSURE_SUCCESS(rv, rv);
     nsMsgDeliverMode mode = nsIMsgSend::nsMsgDeliverNow;
     m_mime_delivery_state->GetDeliveryMode(&mode);
-    nsCString params;
+    if (mode == nsIMsgSend::nsMsgSaveAsDraft || mode == nsIMsgSend::nsMsgSaveAsTemplate)
+      bundle->GetStringFromID(NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SAVING, getter_Copies(msg));
+    else
+      bundle->GetStringFromID(NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SENDING, getter_Copies(msg));
     if (!m_realName.IsEmpty())
-      params = m_realName;
+      printfString = nsTextFormatter::smprintf(msg.get(), m_realName.get());
     else if (NS_SUCCEEDED(mURL->GetSpec(turl)) && !turl.IsEmpty())
     {
       nsAutoCString unescapedUrl;
       MsgUnescapeString(turl, 0, unescapedUrl);
       if (unescapedUrl.IsEmpty())
-        params = turl;
+        printfString = nsTextFormatter::smprintf(msg.get(), turl.get());
       else
-        params = unescapedUrl;
+        printfString = nsTextFormatter::smprintf(msg.get(), unescapedUrl.get());
     }
     else
-      params.AssignLiteral("?");
-
-    NS_ConvertUTF8toUTF16 UTF16params(params);
-    const char16_t* formatParams[] = { UTF16params.get() };
-    if (mode == nsIMsgSend::nsMsgSaveAsDraft || mode == nsIMsgSend::nsMsgSaveAsTemplate)
-      bundle->FormatStringFromName(MOZ_UTF16("failureOnObjectEmbeddingWhileSaving"),
-                                   formatParams, 1, getter_Copies(msg));
-    else
-      bundle->FormatStringFromName(MOZ_UTF16("failureOnObjectEmbeddingWhileSending"),
-                                   formatParams, 1, getter_Copies(msg));
+      printfString = nsTextFormatter::smprintf(msg.get(), "?");
 
     nsCOMPtr<nsIPrompt> aPrompt;
     if (m_mime_delivery_state)
       m_mime_delivery_state->GetDefaultPrompt(getter_AddRefs(aPrompt));
-    nsMsgAskBooleanQuestionByString(aPrompt, msg.get(), &keepOnGoing);
+    nsMsgAskBooleanQuestionByString(aPrompt, printfString, &keepOnGoing);
+    PR_FREEIF(printfString);
 
     if (keepOnGoing)
     {
       status = NS_OK;
       m_bogus_attachment = true; //That will cause this attachment to be ignored.
     }
     else
     {
--- a/mailnews/compose/src/nsMsgCompUtils.cpp
+++ b/mailnews/compose/src/nsMsgCompUtils.cpp
@@ -626,18 +626,17 @@ mime_generate_headers (nsMsgCompFields *
           mozilla::services::GetStringBundleService();
         if (stringService)
         {
           nsCOMPtr<nsIStringBundle> composeStringBundle;
           rv = stringService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(composeStringBundle));
           if (NS_SUCCEEDED(rv))
           {
             nsString undisclosedRecipients;
-            rv = composeStringBundle->GetStringFromName(MOZ_UTF16("undisclosedRecipients"),
-                                                        getter_Copies(undisclosedRecipients));
+            rv = composeStringBundle->GetStringFromID(NS_MSG_UNDISCLOSED_RECIPIENTS, getter_Copies(undisclosedRecipients));
             if (NS_SUCCEEDED(rv) && !undisclosedRecipients.IsEmpty())
             {
                 PUSH_STRING("To: ");
               PUSH_STRING(NS_LossyConvertUTF16toASCII(undisclosedRecipients).get());
                 PUSH_STRING(":;");
                 PUSH_NEWLINE ();
               }
           }
--- a/mailnews/compose/src/nsMsgSend.cpp
+++ b/mailnews/compose/src/nsMsgSend.cpp
@@ -567,18 +567,17 @@ nsMsgComposeAndSend::GatherMimeAttachmen
   buffer = mime_get_stream_write_buffer();
   if (! buffer)
     goto FAILMEM;
 
   buffer_tail = buffer;
 
   NS_ASSERTION (m_attachment_pending_count == 0, "m_attachment_pending_count != 0");
 
-  mComposeBundle->GetStringFromName(MOZ_UTF16("assemblingMessage"),
-                                    getter_Copies(msg));
+  mComposeBundle->GetStringFromID(NS_MSG_ASSEMBLING_MSG, getter_Copies(msg));
   SetStatusMessage( msg );
 
   /* First, open the message file.
   */
   rv = nsMsgCreateTempFile("nsemail.eml", getter_AddRefs(mTempFile));
   NS_ENSURE_SUCCESS(rv, rv);
 
   rv = MsgNewBufferedFileOutputStream(getter_AddRefs(mOutputFile), mTempFile, -1, 00600);
@@ -917,18 +916,17 @@ nsMsgComposeAndSend::GatherMimeAttachmen
         if (m_attachments[i]->mMHTMLPart)
           PreProcessPart(m_attachments[i], m_related_part);
       }
     }
 
   }
 
   // Tell the user we are creating the message...
-  mComposeBundle->GetStringFromName(MOZ_UTF16("creatingMailMessage"),
-                                    getter_Copies(msg));
+  mComposeBundle->GetStringFromID(NS_MSG_CREATING_MESSAGE, getter_Copies(msg));
   SetStatusMessage( msg );
 
   // OK, now actually write the structure we've carefully built up.
   status = toppart->Write();
   if (NS_FAILED(status))
     goto FAIL;
 
   /* Close down encryption stream */
@@ -960,18 +958,17 @@ nsMsgComposeAndSend::GatherMimeAttachmen
     rv = mTempFile->GetFileSize(&fileSize);
     if (NS_FAILED(rv) || fileSize == 0)
     {
       status = NS_MSG_ERROR_WRITING_FILE;
       goto FAIL;
     }
   }
 
-  mComposeBundle->GetStringFromName(MOZ_UTF16("assemblingMessageDone"),
-                                    getter_Copies(msg));
+  mComposeBundle->GetStringFromID(NS_MSG_ASSEMB_DONE_MSG, getter_Copies(msg));
   SetStatusMessage(msg);
 
   if (m_dont_deliver_p && mListener)
   {
     //
     // Need to ditch the file spec here so that we don't delete the
     // file, since in this case, the caller wants the file
     //
@@ -2576,25 +2573,26 @@ nsMsgComposeAndSend::HackAttachments(nsI
       }
 
       //
       // This only returns a failure code if NET_GetURL was not called
       // (and thus no exit routine was or will be called.)
       //
 
       // Display some feedback to user...
+      char16_t     *printfString = nullptr;
       nsString msg;
-      NS_ConvertUTF8toUTF16 params(m_attachments[i]->m_realName);
-      const char16_t *formatParams[] = { params.get() };
-      mComposeBundle->FormatStringFromName(MOZ_UTF16("gatheringAttachment"),
-                                           formatParams, 1, getter_Copies(msg));
-
-      if (!msg.IsEmpty())
+      mComposeBundle->GetStringFromID(NS_MSG_GATHERING_ATTACHMENT, getter_Copies(msg));
+
+      printfString = nsTextFormatter::smprintf(msg.get(), m_attachments[i]->m_realName.get());
+
+      if (printfString)
       {
-        SetStatusMessage(msg);
+        SetStatusMessage(nsDependentString(printfString));
+        PR_Free(printfString);
       }
 
       /* As SnarfAttachment will call GatherMimeAttachments when it will be done (this is an async process),
          we need to avoid to call it ourself.
       */
       needToCallGatherMimeAttachments = false;
 
       nsresult status = m_attachments[i]->SnarfAttachment(mCompFields);
@@ -3202,17 +3200,17 @@ nsMsgComposeAndSend::Init(
       mozilla::services::GetStringBundleService();
     NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
     nsCOMPtr<nsIStringBundle> bundle;
     rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(mComposeBundle));
     NS_ENSURE_SUCCESS(rv, rv);
   }
 
   // Tell the user we are assembling the message...
-  mComposeBundle->GetStringFromName(MOZ_UTF16("assemblingMailInformation"), getter_Copies(msg));
+  mComposeBundle->GetStringFromID(NS_MSG_ASSEMBLING_MESSAGE, getter_Copies(msg));
   SetStatusMessage(msg);
   if (mSendReport)
     mSendReport->SetCurrentProcess(nsIMsgSendReport::process_BuildMessage);
 
   //
   // The Init() method should initialize a send operation for full
   // blown create and send operations as well as just the "send a file"
   // operations.
@@ -3393,17 +3391,17 @@ nsMsgComposeAndSend::DeliverMessage()
   nsresult rv = mTempFile->GetFileSize(&fileSize);
   if (NS_FAILED(rv))
     return NS_ERROR_FAILURE;
 
   if ((mMessageWarningSize > 0) && (fileSize > mMessageWarningSize) && (mGUINotificationEnabled))
   {
     bool abortTheSend = false;
     nsString msg;
-    mComposeBundle->GetStringFromName(MOZ_UTF16("sendLargeMessageWarning"), getter_Copies(msg));
+    mComposeBundle->GetStringFromID(NS_MSG_LARGE_MESSAGE_WARNING, getter_Copies(msg));
 
     if (!msg.IsEmpty())
     {
       char16_t *printfString = nsTextFormatter::smprintf(msg.get(), fileSize);
 
       if (printfString)
       {
         nsCOMPtr<nsIPrompt> prompt;
@@ -3560,17 +3558,17 @@ nsMsgComposeAndSend::DeliverFileAsMail()
     // to the top most mail window...after all, that's where we are going to be sending status
     // update information too....
 
     nsCOMPtr<nsIInterfaceRequestor> callbacks;
     GetNotificationCallbacks(getter_AddRefs(callbacks));
 
     // Tell the user we are sending the message!
     nsString msg;
-    mComposeBundle->GetStringFromName(MOZ_UTF16("sendingMessage"), getter_Copies(msg));
+    mComposeBundle->GetStringFromID(NS_MSG_SENDING_MESSAGE, getter_Copies(msg));
     SetStatusMessage(msg);
     nsCOMPtr<nsIMsgStatusFeedback> msgStatus (do_QueryInterface(mSendProgress));
     // if the sendProgress isn't set, let's use the member variable.
     if (!msgStatus)
       msgStatus = do_QueryInterface(mStatusFeedback);
 
     nsCOMPtr<nsIURI> runningUrl;
     rv = smtpService->SendMailMessage(mTempFile, buf, mUserIdentity,
@@ -3609,18 +3607,17 @@ nsMsgComposeAndSend::DeliverFileAsNews()
   if (NS_SUCCEEDED(rv) && nntpService)
   {
     MsgDeliveryListener *deliveryListener = new MsgDeliveryListener(this, true);
     if (!deliveryListener)
       return NS_ERROR_OUT_OF_MEMORY;
 
     // Tell the user we are posting the message!
     nsString msg;
-    mComposeBundle->GetStringFromName(MOZ_UTF16("postingMessage"),
-                                      getter_Copies(msg));
+    mComposeBundle->GetStringFromID(NS_MSG_POSTING_MESSAGE, getter_Copies(msg));
     SetStatusMessage(msg);
 
     nsCOMPtr <nsIMsgMailSession> mailSession = do_GetService(NS_MSGMAILSESSION_CONTRACTID, &rv);
     NS_ENSURE_SUCCESS(rv, rv);
 
     // JFD TODO: we should use GetDefaultPrompt instead
     nsCOMPtr<nsIMsgWindow> msgWindow;
     rv = mailSession->GetTopmostMsgWindow(getter_AddRefs(msgWindow));
@@ -3966,19 +3963,19 @@ NS_IMETHODIMP
 nsMsgComposeAndSend::NotifyListenerOnStopCopy(nsresult aStatus)
 {
   // This is one per copy so make sure we clean this up first.
   mCopyObj = nullptr;
 
   // Set a status message...
   nsString msg;
   if (NS_SUCCEEDED(aStatus))
-    mComposeBundle->GetStringFromName(MOZ_UTF16("copyMessageComplete"), getter_Copies(msg));
+    mComposeBundle->GetStringFromID(NS_MSG_START_COPY_MESSAGE_COMPLETE, getter_Copies(msg));
   else
-    mComposeBundle->GetStringFromName(MOZ_UTF16("copyMessageFailed"), getter_Copies(msg));
+    mComposeBundle->GetStringFromID(NS_MSG_START_COPY_MESSAGE_FAILED, getter_Copies(msg));
 
   SetStatusMessage(msg);
   nsCOMPtr<nsIPrompt> prompt;
   GetDefaultPrompt(getter_AddRefs(prompt));
 
   if (NS_FAILED(aStatus))
   {
     nsresult rv;
@@ -4415,18 +4412,17 @@ nsMsgComposeAndSend::MimeDoFCC(nsIFile  
     turi = fcc_header;
   else
     GetFolderURIFromUserPrefs(mode, mUserIdentity, turi);
   status = MessageFolderIsLocal(mUserIdentity, mode, turi.get(), &folderIsLocal);
   if (NS_FAILED(status))
     goto FAIL;
 
   // Tell the user we are copying the message...
-  mComposeBundle->GetStringFromName(MOZ_UTF16("copyMessageStart"),
-                                    getter_Copies(msg));
+  mComposeBundle->GetStringFromID(NS_MSG_START_COPY_MESSAGE, getter_Copies(msg));
   if (!msg.IsEmpty())
   {
     nsCOMPtr<nsIRDFService> rdfService = do_GetService(kRDFServiceCID);
     if (rdfService)
     {
       nsCOMPtr<nsIRDFResource> res;
       rdfService->GetResource(turi, getter_AddRefs(res));
       nsCOMPtr<nsIMsgFolder> folder = do_QueryInterface(res);
--- a/mailnews/compose/src/nsMsgSendReport.cpp
+++ b/mailnews/compose/src/nsMsgSendReport.cpp
@@ -296,18 +296,17 @@ NS_IMETHODIMP nsMsgSendReport::DisplayRe
     // SMTP is taking care of it's own error message and will return NS_ERROR_BUT_DONT_SHOW_ALERT as error code.
     // In that case, we must not show an alert ourself.
     if (currError == NS_ERROR_BUT_DONT_SHOW_ALERT)
     {
       mAlreadyDisplayReport = true;
       return NS_OK;
     }
 
-    bundle->GetStringFromName(MOZ_UTF16("sendMessageErrorTitle"),
-                              getter_Copies(dialogTitle));
+    bundle->GetStringFromID(NS_MSG_SEND_ERROR_TITLE, getter_Copies(dialogTitle));
 
     nsresult preStrId = NS_ERROR_SEND_FAILED;
     bool askToGoBackToCompose = false;
     switch (mCurrentProcess)
     {
       case process_BuildMessage :
         preStrId = NS_ERROR_SEND_FAILED;
         askToGoBackToCompose = false;
@@ -335,18 +334,17 @@ NS_IMETHODIMP nsMsgSendReport::DisplayRe
         break;
     }
     bundle->GetStringFromID(NS_ERROR_GET_CODE(preStrId), getter_Copies(dialogMessage));
 
     //Do we already have an error message?
     if (!askToGoBackToCompose && currMessage.IsEmpty())
     {
       //we don't have an error description but we can put a generic explanation
-      bundle->GetStringFromName(MOZ_UTF16("genericFailureExplanation"),
-                                getter_Copies(currMessage));
+      bundle->GetStringFromID(NS_MSG_GENERIC_FAILURE_EXPLANATION, getter_Copies(currMessage));
     }
 
     if (!currMessage.IsEmpty())
     {
       //Don't need to repeat ourself!
       if (!currMessage.Equals(dialogMessage))
       {
         if (!dialogMessage.IsEmpty())
@@ -354,68 +352,66 @@ NS_IMETHODIMP nsMsgSendReport::DisplayRe
         dialogMessage.Append(currMessage);
       }
     }
 
     if (askToGoBackToCompose)
     {
       bool oopsGiveMeBackTheComposeWindow = true;
       nsString text1;
-      bundle->GetStringFromName(MOZ_UTF16("returnToComposeWindowQuestion"),
-                                getter_Copies(text1));
+      bundle->GetStringFromID(NS_MSG_ASK_TO_COMEBACK_TO_COMPOSE, getter_Copies(text1));
       if (!dialogMessage.IsEmpty())
         dialogMessage.AppendLiteral("\n");
       dialogMessage.Append(text1);
       nsMsgAskBooleanQuestionByString(prompt, dialogMessage.get(), &oopsGiveMeBackTheComposeWindow, dialogTitle.get());
       if (!oopsGiveMeBackTheComposeWindow)
         *_retval = NS_OK;
     }
     else
       nsMsgDisplayMessageByString(prompt, dialogMessage.get(), dialogTitle.get());
   }
   else
   {
-    const char16_t* title;
+    int32_t titleID;
     nsresult preStrId;
 
     switch (mDeliveryMode)
     {
       case nsIMsgCompDeliverMode::Later:
-        title = MOZ_UTF16("sendLaterErrorTitle");
+        titleID = NS_MSG_SENDLATER_ERROR_TITLE;
         preStrId = NS_MSG_UNABLE_TO_SEND_LATER;
         break;
 
       case nsIMsgCompDeliverMode::AutoSaveAsDraft:
       case nsIMsgCompDeliverMode::SaveAsDraft:
-        title = MOZ_UTF16("saveDraftErrorTitle");
+        titleID = NS_MSG_SAVE_DRAFT_TITLE;
         preStrId = NS_MSG_UNABLE_TO_SAVE_DRAFT;
         break;
 
       case nsIMsgCompDeliverMode::SaveAsTemplate:
-        title = MOZ_UTF16("saveTemplateErrorTitle");
+        titleID = NS_MSG_SAVE_TEMPLATE_TITLE;
         preStrId = NS_MSG_UNABLE_TO_SAVE_TEMPLATE;
         break;
 
       default:
-        /* This should never happen! */
-        title = MOZ_UTF16("sendMessageErrorTitle");
+        /* This should never happend! */
+        titleID = NS_MSG_SEND_ERROR_TITLE;
         preStrId = NS_ERROR_SEND_FAILED;
         break;
     }
 
-    bundle->GetStringFromName(title, getter_Copies(dialogTitle));
+    bundle->GetStringFromID(titleID, getter_Copies(dialogTitle));
     bundle->GetStringFromID(NS_ERROR_GET_CODE(preStrId),
                             getter_Copies(dialogMessage));
 
     //Do we have an error message...
     if (currMessage.IsEmpty())
     {
       //we don't have an error description but we can put a generic explanation
-      bundle->GetStringFromName(MOZ_UTF16("genericFailureExplanation"),
-                                getter_Copies(currMessage));
+      bundle->GetStringFromID(NS_MSG_GENERIC_FAILURE_EXPLANATION, getter_Copies(currMessage));
     }
 
     if (!currMessage.IsEmpty())
     {
       if (!dialogMessage.IsEmpty())
         dialogMessage.Append(char16_t('\n'));
       dialogMessage.Append(currMessage);
     }
--- a/mailnews/compose/src/nsSmtpProtocol.cpp
+++ b/mailnews/compose/src/nsSmtpProtocol.cpp
@@ -426,28 +426,28 @@ NS_IMETHODIMP nsSmtpProtocol::OnStopRequ
 
   return rv;
 }
 
 /////////////////////////////////////////////////////////////////////////////////////////////
 // End of nsIStreamListenerSupport
 //////////////////////////////////////////////////////////////////////////////////////////////
 
-void nsSmtpProtocol::UpdateStatus(char16_t* aStatusName)
+void nsSmtpProtocol::UpdateStatus(int32_t aStatusID)
 {
   if (m_statusFeedback)
   {
     nsCOMPtr<nsIStringBundleService> bundleService =
       mozilla::services::GetStringBundleService();
     if (!bundleService) return;
     nsCOMPtr<nsIStringBundle> bundle;
     nsresult rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(bundle));
     if (NS_FAILED(rv)) return;
     nsString msg;
-    bundle->GetStringFromName(aStatusName, getter_Copies(msg));
+    bundle->GetStringFromID(aStatusID, getter_Copies(msg));
     UpdateStatusWithString(msg.get());
   }
 }
 
 void nsSmtpProtocol::UpdateStatusWithString(const char16_t * aStatusString)
 {
   if (m_statusFeedback && aStatusString)
     m_statusFeedback->ShowStatusString(nsDependentString(aStatusString));
@@ -1599,17 +1599,17 @@ nsresult nsSmtpProtocol::SendDataRespons
     return(NS_ERROR_SENDING_DATA_COMMAND);
   }
 
   PR_FREEIF(command);
 
   m_nextState = SMTP_SEND_POST_DATA;
   ClearFlag(SMTP_PAUSE_FOR_READ);   /* send data directly */
 
-  UpdateStatus(MOZ_UTF16("smtpDeliveringMail"));
+  UpdateStatus(SMTP_DELIV_MAIL);
 
   {
 //      m_runningURL->GetBodySize(&m_totalMessageSize);
   }
   return(status);
 }
 
 void nsSmtpProtocol::SendMessageInFile()
@@ -1622,17 +1622,17 @@ void nsSmtpProtocol::SendMessageInFile()
     // in some windows header file
     nsMsgAsyncWriteProtocol::PostMessage(url, file);
 
   SetFlag(SMTP_PAUSE_FOR_READ);
 
   // for now, we are always done at this point..we aren't making multiple calls
   // to post data...
 
-  UpdateStatus(MOZ_UTF16("smtpDeliveringMail"));
+  UpdateStatus(SMTP_DELIV_MAIL);
   m_nextState = SMTP_RESPONSE;
   m_nextStateAfterResponse = SMTP_SEND_MESSAGE_RESPONSE;
 }
 
 void nsSmtpProtocol::SendPostData()
 {
 	// mscott: as a first pass, I'm writing everything at once and am not
 	// doing it in chunks...
@@ -1665,17 +1665,17 @@ nsresult nsSmtpProtocol::SendMessageResp
   {
     nsresult rv = nsExplainErrorDetails(m_runningURL, NS_ERROR_SENDING_MESSAGE, m_responseText.get());
     NS_ASSERTION(NS_SUCCEEDED(rv), "failed to explain SMTP error");
 
     m_urlErrorState = NS_ERROR_BUT_DONT_SHOW_ALERT;
     return(NS_ERROR_SENDING_MESSAGE);
   }
 
-  UpdateStatus(MOZ_UTF16("smtpMailSent"));
+  UpdateStatus(SMTP_PROGRESS_MAILSENT);
 
   /* else */
   return SendQuit();
 }
 
 nsresult nsSmtpProtocol::SendQuit(SmtpState aNextStateAfterResponse)
 {
   m_sendDone = true;
--- a/mailnews/compose/src/nsSmtpProtocol.h
+++ b/mailnews/compose/src/nsSmtpProtocol.h
@@ -144,17 +144,17 @@ private:
     void Initialize(nsIURI * aURL);
     virtual nsresult ProcessProtocolState(nsIURI * url, nsIInputStream * inputStream, 
                                           uint64_t sourceOffset, uint32_t length) MOZ_OVERRIDE;
 
     ////////////////////////////////////////////////////////////////////////////////////////
     // Communication methods --> Reading and writing protocol
     ////////////////////////////////////////////////////////////////////////////////////////
 
-    void UpdateStatus(char16_t* aStatusName);
+    void UpdateStatus(int32_t aStatusID);
     void UpdateStatusWithString(const char16_t * aStatusString);
 
     ////////////////////////////////////////////////////////////////////////////////////////
     // Protocol Methods --> This protocol is state driven so each protocol method is 
     //						designed to re-act to the current "state". I've attempted to 
     //						group them together based on functionality. 
     ////////////////////////////////////////////////////////////////////////////////////////
 
--- a/mailnews/extensions/mdn/src/nsMsgMdnGenerator.cpp
+++ b/mailnews/extensions/mdn/src/nsMsgMdnGenerator.cpp
@@ -1122,17 +1122,17 @@ NS_IMETHODIMP nsMsgMdnGenerator::OnStopR
     NS_ENSURE_TRUE(bundleService, NS_ERROR_UNEXPECTED);
 
     rv = bundleService->CreateBundle("chrome://messenger/locale/messengercompose/composeMsgs.properties", getter_AddRefs(bundle));
     NS_ENSURE_SUCCESS(rv, rv);
 
     nsString failed_msg, dialogTitle;
 
     bundle->FormatStringFromID(NS_ERROR_GET_CODE(aExitCode), params, 1, getter_Copies(failed_msg));
-    bundle->GetStringFromName(MOZ_UTF16("sendMessageErrorTitle"), getter_Copies(dialogTitle));
+    bundle->GetStringFromID(NS_MSG_SEND_ERROR_TITLE, getter_Copies(dialogTitle));
 
     nsCOMPtr<nsIPrompt> dialog;
     rv = m_window->GetPromptDialog(getter_AddRefs(dialog));
     if (NS_SUCCEEDED(rv))
       dialog->Alert(dialogTitle.get(),failed_msg.get());
 
     return NS_OK;
 }
--- a/suite/locales/en-US/chrome/mailnews/compose/composeMsgs.properties
+++ b/suite/locales/en-US/chrome/mailnews/compose/composeMsgs.properties
@@ -11,58 +11,77 @@ unableToOpenFile=Unable to open the file
 unableToOpenTmpFile=Unable to open the temporary file %S. Check your 'Temporary Directory' setting.
 
 ## @name NS_MSG_UNABLE_TO_SAVE_TEMPLATE
 12502=Unable to save your message as template.
 
 ## @name NS_MSG_UNABLE_TO_SAVE_DRAFT
 12503=Unable to save your message as draft.
 
+## @name NS_MSG_LOAD_ATTACHMNTS
+12504=Loading attachments…
+
+## @name NS_MSG_LOAD_ATTACHMNT
+12505=Loading attachment…
+
 ## @name NS_MSG_COULDNT_OPEN_FCC_FOLDER
 12506=Couldn't open Sent mail folder. Please verify that your Mail preferences are correct.
 
+## @name NS_MSG_CANT_POST_TO_MULTIPLE_NEWS_HOSTS
+12507=Can't post to multiple news hosts. Try again.
+
+## @name NS_MSG_ASSEMB_DONE_MSG
+12508=Assembling message…Done
+
+## @name NS_MSG_ASSEMBLING_MSG
+12509=Assembling message…
+
 ## @name NS_MSG_NO_SENDER
 12510=No sender was specified. Please fill in your email address in the Mail & Newsgroups account settings.
 
 ## @name NS_MSG_NO_RECIPIENTS
 12511=No recipients were specified. Please enter a recipient or newsgroup in the addressing area.
 
 ## @name NS_MSG_ERROR_WRITING_FILE
 12512=Error writing temporary file.
 
 ## @name NS_ERROR_SENDING_FROM_COMMAND
-## LOCALIZATION NOTE (12514): argument %s is SMTP server response
 12514=An error occurred while sending mail. The mail server responded:  %s.  Please verify that your email address is correct in your Mail preferences and try again.
 
 ## @name NS_ERROR_SENDING_DATA_COMMAND
-## LOCALIZATION NOTE (12516): argument %s is SMTP server response
 12516=An (SMTP) error occurred while sending mail. The server responded:  %s.
 
 ## @name NS_ERROR_SENDING_MESSAGE
-## LOCALIZATION NOTE (12517): argument %s is SMTP server response
 12517=An error occurred while sending mail. The mail server responded:  %s. Please check the message and try again.
 
 ## @name NS_ERROR_POST_FAILED
 12518=The message could not be posted because connecting to the news server failed. The server may be unavailable or is refusing connections. Please verify that your news server settings are correct and try again, or else contact your network administrator.
 
 ## @name NS_ERROR_QUEUED_DELIVERY_FAILED
 12519=An error occurred delivering unsent messages.
 
 ## @name NS_ERROR_SEND_FAILED
 12520=Sending of message failed.
 
+## @name SMTP_DELIV_MAIL
+12521=Delivering mail…
+
+## @name SMTP_MESSAGE_SENT_WAITING_MAIL_REPLY
+12522=Mail: Message sent; waiting for reply…
+
+## @name SMTP_PROGRESS_MAILSENT
+12523=Mail sent successfully
+
 ## @name NS_ERROR_SMTP_SERVER_ERROR
-## LOCALIZATION NOTE (12524): argument %s is SMTP server response
 12524=An error occurred sending mail: SMTP server error. The server responded:  %s\n Contact your mail administrator for assistance.
 
 ## @name NS_MSG_UNABLE_TO_SEND_LATER
 12525=Unable to save your message in order to send it later.
 
 ## @name NS_ERROR_COMMUNICATIONS_ERROR
-## LOCALIZATION NOTE (12526): argument %d is error code
 12526=A communications error occurred: %d.  Please try again.
 
 ## @name NS_ERROR_BUT_DONT_SHOW_ALERT
 12527=THIS IS JUST A PLACEHOLDER.  YOU SHOULD NEVER SEE THIS STRING.
 
 ## @name NS_ERROR_TCP_READ_ERROR
 12528=A network error occurred while receiving data.  (Network Error: %s)  Try connecting again.
 
@@ -70,80 +89,122 @@ 12528=A network error occurred while rec
 12529=An error occurred sending mail:  the return mail address was invalid.  Please verify that your email address is correct in your Mail preferences and try again.
 
 ## @name NS_ERROR_MIME_MPART_ATTACHMENT_ERROR
 12531=Attachment error.
 
 ## @name NS_MSG_FAILED_COPY_OPERATION
 12532=The message was sent successfully, but could not be copied to your Sent folder.
 
+## @name NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SAVING
+12533=There was a problem including the file %.200s in the message. Would you like to continue saving the message without this file?
+
+## @name NS_MSG_ASSEMBLING_MESSAGE
+12534=Assembling mail information…
+
+## @name NS_MSG_GATHERING_ATTACHMENT
+12535=Attaching %s…
+
+## @name NS_MSG_CREATING_MESSAGE
+12536=Creating mail message…
+
+## @name NS_MSG_FAILURE_ON_OBJ_EMBED_WHILE_SENDING
+12537=There was a problem including the file %.200s in the message. Would you like to continue sending the message without this file?
+
+## @name NS_MSG_START_COPY_MESSAGE
+12538=Copying message to %S folder…
+
+## @name NS_MSG_START_COPY_MESSAGE_COMPLETE
+12539=Copy complete.
+
+## @name NS_MSG_START_COPY_MESSAGE_FAILED
+12540=Copy failed.
+
+## @name NS_MSG_LARGE_MESSAGE_WARNING
+12541=Warning! You are about to send a %d byte message. Are you sure that you want to do this?
+
+## @name NS_MSG_SENDING_MESSAGE
+12550=Sending message…
+
+## @name NS_MSG_POSTING_MESSAGE
+12551=Posting message…
+
 ## @name NS_ERROR_NNTP_NO_CROSS_POSTING
 12554=You can only send a message to one news server at a time.
 
 ## @name NS_MSG_CANCELLING
 12555=Cancelling…
 
+## @name NS_MSG_SEND_ERROR_TITLE
+12556=Send Message Error
+
+## @name NS_MSG_SENDLATER_ERROR_TITLE
+12557=Send Later Error
+
+## @name NS_MSG_SAVE_DRAFT_TITLE
+12558=Save Draft Error
+
+## @name NS_MSG_SAVE_TEMPLATE_TITLE
+12559=Save Template Error
+
 ## @name NS_ERROR_SEND_FAILED_BUT_NNTP_OK
 12560=Your message has been posted to the newsgroup but has not been sent to other recipient.
 
+## @name NS_MSG_ASK_TO_COMEBACK_TO_COMPOSE
+12561=Would you like to return to the compose window?
+
+## @name NS_MSG_GENERIC_FAILURE_EXPLANATION
+12562=Please verify that your Mail & Newsgroups account settings are correct and try again.
+
 ## @name NS_MSG_ERROR_READING_FILE
 12563=Error reading file.
 
 followupToSenderMessage=The author of this message has requested that responses be sent only to the author. If you also want to reply to the newsgroup, add a new row to the addressing area, choose Newsgroup from the recipients list, and enter the name of the newsgroup.
 
+## @name NS_MSG_UNDISCLOSED_RECIPIENTS
+## LOCALIZATION NOTE: this string must be using only US_ASCII characters
+12566=undisclosed-recipients
+
 ## @name NS_MSG_ERROR_ATTACHING_FILE
-## LOCALIZATION NOTE (12570): argument %S is file name/URI of object to be attached
 12570=There was an error attaching %S. Please check if you have access to the file.
 
 ## @name NS_ERROR_SMTP_GREETING
-## LOCALIZATION NOTE (12572): argument %s is SMTP server greeting
 12572=An error occurred sending mail: The mail server sent an incorrect greeting:  %s.
 
 ## @name NS_ERROR_SENDING_RCPT_COMMAND
-## LOCALIZATION NOTE (12575): argument %1$s is SMTP server response, argument %2$s is intended message recipient.
 12575=An error occurred while sending mail. The mail server responded:  %1$s. Please check the message recipient %2$s and try again.
 
 ## @name NS_ERROR_STARTTLS_FAILED_EHLO_STARTTLS
-## LOCALIZATION NOTE (12582): argument %s is SMTP server
 12582=An error occurred sending mail: Unable to establish a secure link with SMTP server %S using STARTTLS since it doesn't advertise that feature. Switch off STARTTLS for that server or contact your service provider.
 
 ## @name NS_ERROR_SMTP_PASSWORD_UNDEFINED
-## LOCALIZATION NOTE (12584): argument %S is SMTP account
 12584=An error occurred sending mail: Could not get password for %S. The message was not sent.
 
 ## @name NS_ERROR_SMTP_TEMP_SIZE_EXCEEDED
-## LOCALIZATION NOTE (12586): argument %s is SMTP server response
 12586=The size of the message you are trying to send exceeds a temporary size limit of the server. The message was not sent; try to reduce the message size or wait some time and try again. The server responded:  %s.
 
 ## @name NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_1
-## LOCALIZATION NOTE (12587): argument %d is SMTP server size limit
 12587=The size of the message you are trying to send exceeds the global size limit (%d bytes) of the server. The message was not sent; reduce the message size and try again.
 
 ## @name NS_ERROR_SMTP_PERM_SIZE_EXCEEDED_2
-## LOCALIZATION NOTE (12588): argument %s is SMTP server response
 12588=The size of the message you are trying to send exceeds the global size limit of the server. The message was not sent; reduce the message size and try again. The server responded:  %s.
 
 ## @name NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_SERVER
-## LOCALIZATION NOTE (12589): argument %S is SMTP server
 12589=An error occurred sending mail: SMTP server %S is unknown. The server may be incorrectly configured. Please verify that your SMTP server settings are correct and try again.
 
 ## @name NS_ERROR_SMTP_SEND_FAILED_REFUSED
-## LOCALIZATION NOTE (12590): argument %S is SMTP server
 12590=The message could not be sent because connecting to SMTP server %S failed. The server may be unavailable or is refusing SMTP connections. Please verify that your SMTP server settings are correct and try again, or contact the server administrator.
 
 ## @name NS_ERROR_SMTP_SEND_FAILED_INTERRUPTED
-## LOCALIZATION NOTE (12591): argument %S is SMTP server
 12591=The message could not be sent because the connection to SMTP server %S was lost in the middle of the transaction. Try again or contact your network administrator.
 
 ## @name NS_ERROR_SMTP_SEND_FAILED_TIMEOUT
-## LOCALIZATION NOTE (12592): argument %S is SMTP server
 12592=The message could not be sent because the connection to SMTP server %S timed out. Try again or contact your network administrator.
 
 ## @name NS_ERROR_SMTP_SEND_FAILED_UNKNOWN_REASON
-## LOCALIZATION NOTE (12593): argument %S is SMTP server
 12593=The message could not be sent using SMTP server %S for an unknown reason. Please verify that your SMTP server settings are correct and try again, or contact your network administrator.
 
 ## @name NS_ERROR_SMTP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_NO_SSL
 # LOCALIZATION NOTE (12594): $S is server hostname
 12594=The SMTP server %S does not seem to support encrypted passwords. If you just set up the account, please try changing to 'Password, transmitted insecurely' as the 'Authentication method' in the 'Account Settings | Server settings'. If it used to work and now suddenly fails, this is a common scenario how someone could steal your password.
 
 ## @name NS_ERROR_SMTP_AUTH_CHANGE_ENCRYPT_TO_PLAIN_SSL
 # LOCALIZATION NOTE (12595): $S is server hostname
@@ -188,24 +249,18 @@ windowTitlePrefix=Compose:
 ## String used by the dialog that ask the user to enter a subject
 sendMsgTitle=Send Message
 subjectDlogMessage=You did not specify a subject for this message. If you would like to provide one, please type it now.
 
 ## String used by the dialog that informs the user about the newsgroup recipient
 recipientDlogMessage=This account only supports email recipients. Continuing will ignore newsgroups.
 
 #String used by the alert that tells the user an e-mail address is invalid
-## LOCALIZATION NOTE (addressInvalid): $S is email address
 addressInvalid=%1$S is not a valid e-mail address because it is not of the form user@host. You must correct it before sending the e-mail.
 
-genericFailureExplanation=Please verify that your Mail & Newsgroups account settings are correct and try again.
-
-## LOCALIZATION NOTE (undisclosedRecipients): this string must use only US_ASCII characters
-undisclosedRecipients=undisclosed-recipients
-
 ## String used for attachment pretty name, when attachment is a message
 messageAttachmentSafeName=Attached Message
 ## String used for attachment pretty name, when attachment is message part
 partAttachmentSafeName=Attached Message Part
 
 ## String used by the Initialization Error dialog
 initErrorDlogTitle=Message Compose
 initErrorDlgMessage=An error occurred while creating a message compose window. Please try again.
@@ -229,53 +284,19 @@ quitComposeWindowMessage2=%1$S is curren
 quitComposeWindowQuitButtonLabel2=&Quit
 quitComposeWindowWaitButtonLabel2=&Wait
 
 ## Strings used by prompt for Ctrl-Enter check before sending message
 sendMessageCheckWindowTitle=Send Message
 sendMessageCheckLabel=Are you sure you are ready to send this message?
 sendMessageCheckSendButtonLabel=Send
 
-assemblingMessageDone=Assembling message…Done
-assemblingMessage=Assembling message…
-
-smtpDeliveringMail=Delivering mail…
-smtpMailSent=Mail sent successfully
-
-assemblingMailInformation=Assembling mail information…
-## LOCALIZATION NOTE (gatheringAttachment): argument %S is file name/URI of attachment
-gatheringAttachment=Attaching %S…
-creatingMailMessage=Creating mail message…
-
-## LOCALIZATION NOTE (copyMessageStart): argument %S is folder name
-copyMessageStart=Copying message to %S folder…
-copyMessageComplete=Copy complete.
-copyMessageFailed=Copy failed.
-
-sendLargeMessageWarning=Warning! You are about to send a %d byte message. Are you sure that you want to do this?
-
-sendingMessage=Sending message…
-sendMessageErrorTitle=Send Message Error
-postingMessage=Posting message…
-
-sendLaterErrorTitle=Send Later Error
-saveDraftErrorTitle=Save Draft Error
-saveTemplateErrorTitle=Save Template Error
-
-## LOCALIZATION NOTE (failureOnObjectEmbeddingWhileSaving): argument %.200S is file name/URI of object to be embedded
-failureOnObjectEmbeddingWhileSaving=There was a problem including the file %.200S in the message. Would you like to continue saving the message without this file?
-## LOCALIZATION NOTE (failureOnObjectEmbeddingWhileSending): argument %.200S is file name/URI of object to be embedded
-failureOnObjectEmbeddingWhileSending=There was a problem including the file %.200S in the message. Would you like to continue sending the message without this file?
-returnToComposeWindowQuestion=Would you like to return to the compose window?
-
 ## reply header in composeMsg
 ## <author> wrote:
-## LOCALIZATION NOTE (mailnews.reply_header_authorwrote): %s is name of person replying to
 mailnews.reply_header_authorwrote=%s wrote
-## LOCALIZATION NOTE (mailnews.reply_header_ondate): %s is date
 mailnews.reply_header_ondate=On %s
 
 ## reply header in composeMsg
 ## user specified
 mailnews.reply_header_originalmessage=-------- Original Message --------
 
 ## forwarded header in composeMsg
 ## user specified