[Last version of User Story, as of 2015/10/13]

One-liner patch attached to bug 1204379 by aceman was rejected by Magnus in that bug.
This bug is to analyze what's wrong in patch proposed by aceman, with checking what's wrong in current code executed just before going to step of "apply Send Options", with checkig what's wrong in one-liner patch proposed by bug opener for ease of comparison with current code and aceman's patch.
See attached patch to Bug 1204379 for "one-liner patch by aceman", please.
FYI.
(one-liner patch by aceman)
  -  if (aConvertible == nsIMsgCompConvertible::Plain || allPlain)
  +  if (allPlain && (aConvertible == nsIMsgCompConvertible::Plain))
(one-liner patch by bug opener)
  -  if (aConvertible == nsIMsgCompConvertible::Plain || allPlain)
  +  if (allPlain)  

See Bug 1204379 Comment #12 for Quick Summary of known workaround or circumvention, please.

Please don't add comment about already known/discussed issues in other bugs which is in dependency tree for meta bug 889315.
Please don't add comment for complaints on issues of every bug in dependency tree for meta bug 889315. 

This bug is for "text only in Body Text and/or PRE only" case only.
So refers to aCovertible==Convertible::Plain case only.

[ Relevant conditions, and relevant actions ]
> As I wrote in Comment #16, "send logic" is sorted out by bug 970118 in 2014.
> So, current logic can be represented as following simple table.
> Without great sorting out work,
> I couldn't understand pretty complicated logic before bug 970118...
> 
> Thunderbird produces following funny phenomenon == mystery for user.
>   Even though user actually composed mail in HTML mode,
>   the mail was sent as plain/text by Tb silently, with UNKNOWN reason.
> Current Action in (C-1) "if(!allHtml&&!allPlain&&Convertible::Plain)"
> is cause of user's confusion.
> 
> See Comment #46 for relevant bugs which can be solution of the funny phenomenon.
> 
>     "aConvertible==Convertible::Plain is false" === "aConvertible==Convertible::No"
>     SF::HTML      === nsIMsgCompSendFormat::HTML 
>     SF::PlainText === nsIMsgCompSendFormat::PlainText  
>     
> ------ ------------------------------------ -------------- --------------- -------------- --------------- 
> CaseID <------ Corresponding Condition --->                                                               
>                         aConvertible                                                                      
>        allHtml allPlain   ==                Current        Proposed        Proposed       Proposed        
>                           Convertible         Tb's Action    by bug opener   by aceman      by Magnus     
>                           ::Plain                                                                         
> ------ ------- -------- ------------------  -------------- --------------- -------------- --------------- 
> (A-1)  true    false    true                SF::HTML       SF::HTML        SF::HTML       SF::HTML        
> (A-2)  true    false    false               SF::HTML       SF::HTML        SF::HTML       SF::HTML        
> ------ ------- -------- ------------------  -------------- --------------- -------------- --------------- 
> (B-1)  false   true     true                SF::PlainText  SF::PlainText   SF::PlainText  SF::PlainText   
> (B-2)  false   true     false               SF::PlainText  SF::PlainText   UseSendOptions Always Ask to user
>                                                            (Why          ) <- Dataloss!!! in current code ->
>                                                            ( current code) (So, use     ) (Should be Asked) 
>                                                            ( shold be    ) ( SendOptions) ( No need to use) 
>                                                            ( changed     )                (   Send Options) 
>                                                            ( at same time)                                  
>                                                            ( upon change )                                  
>                                                            ( for C-1?    )                                  
> ------ ------- -------- ------------------  -------------- --------------- -------------- --------------- 
> (C-1)  false   false    true                SF::PlainText  UseSendOptions  UseSendOptions Always Ask?
> (C-2)  false   false    false               UseSendOptions UseSendOptions  UseSendOptions UseSendOptions  
> ------ ------- -------- ------------------  -------------- --------------- -------------- --------------- 
> 
>       Issue in solution of UseSendOptions for (C-1).
>             Because single Send Options is shared between (C-1) and (C-2), 
>             If Text is set for (C-1), Text is also applied to (C-2), vive versa, 
>             if HTML is set for (C-1), HTML is also applied to (C-2), vive versa, 
>             If Ask  is set for (C-1), Ask  is also applied to (C-2), vive versa,
>                and user can not know about which case of (C-1) and (C-2).
>             And user can set "Both HTML and Text" in Send Options.
>           Issue in solution of UseSendOptions or AlwaysAsk for (B-2).
>             If UseSendOptions, Send Options panel is shared among (B-2), (C-1), and (C-2),
>                and user can set "Both HTML and Text" in Send Options.
>             If AlwaysAsk, all users who currently has no problem in (B-2)
>                will be always asked upon each (B-2) case.
>             eg. recipients in Text Domain, so user creates simple HTML, but uses <B> in signature.
>             Split to 3 types? (truly text only, almost text only, many tags used)
>             This is reason why I don't propose change in (B-2).
> 
>      If allHTML is true, allPlain is always false,
>      and if allPlain is true, allHTML is always false,    
>      so comibination are following only :
>        (A) allHTML==true  && allPlain==false
>        (B) allHTML==false && allPlain==true
>        (C) allHTML==false && allPlain==false
>      In any case, aConvertible is one of (1) Convertible::Plain or (2) Convertible::No.     
>      So, conditions falls into 6 cases in above table,
>      and current logic is repesented as above table.