| 
 | 
	
沙发
 
 
 楼主 |
发表于 2016-3-27 22:52:24
|
只看该作者
 
 
 
1.设置标志的时机当点发送按钮后,检测到是群发单显时: 
msgcomposecommands.js 
if ( document.getElementById("msgTO_lab").textContent.indexOf(bloksss) >= 0  ) 
    { 
msgCompFields.bulkSendSingleShow = true; 
} 
C++对应实现 
D:\svn\Client\ThinkMail_ClientWin_2013\trunk\src\thinkmail\mailnews\compose\src\nsMsgCompUtils.cpp 
if (fields->GetBulkSendSingleShow()) 
          PUSH_STRING ("BulkSendSingleShow:1" CRLF); 
2.群发单显在已发送中显示: 
该封邮件已经通过群发单显单独发送到每个收件人。 
BulkSendSingleShow:1 
D:\svn\Client\ThinkMail_ClientWin_2013\trunk\src\thinkmail\obj_cmmail\mozilla\dist\bin\chrome\messenger\content\messenger\mailWindowOverlay.jsD:\svn\Client\ThinkMail_ClientWin_2013\trunk\src\thinkmail\mailnews\mime\emitters\src\nsMimeHtmlEmitter.cpp 
  headerSink->OnEndMsgHeaders(mailnewsUrl);?????????? 
//alert(aUrl); //[xpconnect wrapped nsIMsgMailNewsUrl] 
邮件内容加载时调用function HandleBSSSResponse(aUrl)  
mimeHdr = aUrl.mimeHeaders; 
var BSSSHeader = mimeHdr.extractHeader("BulkSendSingleShow", false); 
根据BSSSHeader确认是否显示 
 
3.只在已发送中显示这个提示 
 
if ( msgFolder.isSpecialFolder(Components.interfaces.nsMsgFolderFlags.SentMail) ) 
    gMessageStateNotificationBar.setBSSSMsg(msgHdr, mimeHdr, BSSSHeader); 
  else 
  { 
    gMessageStateNotificationBar.setBSSSMsg(msgHdr, mimeHdr, false); 
  } 
 
4.群发单显的情况下保存草稿,再打开草稿,保持住群发单显状态。作为新邮件编辑流程 
mailWindowOverlay.js 
//作为新邮件编辑  
function MsgEditMessageAsNew() 
{ 
  composeMsgByType(Components.interfaces.nsIMsgCompType.Template); 
} 
 
//草稿编辑邮件 
ComposeMessage(Components.interfaces.nsIMsgCompType.Draft, 
                 Components.interfaces.nsIMsgCompFormat.Default, 
                 gFolderDisplay.displayedFolder, 
                 gFolderDisplay.selectedMessageUris); 
 
 
mailCommands.js 
function ComposeMessage(type, format, folder, messageArray) 
{ 
for (var i = 0; i < messageArray.length; ++i) //这里只传过来一个选中的邮件 
      { 
        var messageUri = messageArray;////hechengjin88@imap.126.com/&g0l6P3ux-#1385437452 
        hdr = messenger.msgHdrFromURI(messageUri); 
        identity = getIdentityForHeader(hdr, type); 
        if (FeedMessageHandler.isFeedMessage(hdr)) 
          openComposeWindowForRSSArticle(null, hdr, messageUri, type, 
                                         format, identity, msgWindow); 
        else 
          MailServices.compose.OpenComposeWindow(null, hdr, messageUri, type, 
                                                 format, identity, msgWindow); 
      } 
} 
MsgComposeCommands.js 
function ComposeStartup(recycled, aParams) 
{ 
var composeSvc = Components.classes["@mozilla.org/messengercompose;1"] 
                             .getService(Components.interfaces.nsIMsgComposeService); 
  gMsgCompose = composeSvc.initCompose(params, window, editorElement.docShell); 
document.getElementById("dsnMenu") 
          .setAttribute("checked", gMsgCompose.compFields.DSN); 
 
}function ComposeFieldsReady() 
{ 
let msgHdr; 
  if (gParamsWhenComposeStartup) 
    msgHdr = gParamsWhenComposeStartup.origMsgHdr; 
} 
 
D:\svn\Client\ThinkMail_ClientWin_2013\trunk\src\thinkmail\mailnews\compose\src\nsMsgComposeService.cpp 
NS_IMETHODIMP nsMsgComposeService::InitCompose 
D:\svn\Client\ThinkMail_ClientWin_2013\trunk\src\thinkmail\mailnews\compose\src\nsMsgCompose.cpp 
nsMsgCompose::Initialize 
 
- //alert(messageUri);//imap-message://hechengjin88@imap.126.com/&g0l6P3ux-#1385437452
 
 -         //alert(hdr); //[xpconnect wrapped nsIMsgDBHdr]
 
 -         var hdrinfos;
 
 -         for(attribute in hdr){
 
 -    var objectValue = eval('hdr.' + attribute);
 
 -    dump(attribute + ":" +objectValue+"\n");
 
 -    
 
 -    hdrinfos += attribute + ":" +objectValue+"\n";
 
 - }
 
 - alert(hdrinfos);
 
 -         identity = getIdentityForHeader(hdr, type);
 
 -         //alert(identity); //[nsIMsgIdentity: id1]
 
 -         //alert(format); //0 
 
 -         //alert(msgWindow); //[xpconnect wrapped nsIMsgWindow]
 
  复制代码 hdr内容 
- undefinedflags:129
 
 - mime2DecodedRecipients:hechengjin <hechengjin@richinfo.cn>, hechengjin88 <hechengjin88@126.com>
 
 - mime2DecodedSubject:sfg
 
 - date:1409110867000000
 
 - isFlagged:false
 
 - getStringProperty:function getStringProperty() {
 
 -     [native code]
 
 - }
 
 - messageSize:938
 
 - folder:[xpconnect wrapped (nsISupports, nsIMsgFolder, nsIRDFResource, nsIMsgImapMailFolder)]
 
 - getUint32Property:function getUint32Property() {
 
 -     [native code]
 
 - }
 
 - recipients:hechengjin <hechengjin@richinfo.cn>, hechengjin88 <hechengjin88@126.com>
 
 - ccList:
 
 - accountKey:
 
 - label:0
 
 - author:hechengjin88 <hechengjin88@126.com>
 
 - isRead:true
 
 - messageId:53FD4F81.4000604@126.com
 
 - markHasAttachments:function markHasAttachments() {
 
 -     [native code]
 
 - }
 
 - QueryInterface:function QueryInterface() {
 
 -     [native code]
 
 - }
 
 - getProperty:function getProperty() {
 
 -     [native code]
 
 - }
 
 - setProperty:function setProperty() {
 
 -     [native code]
 
 - }
 
 - setStringProperty:function setStringProperty() {
 
 -     [native code]
 
 - }
 
 - setUint32Property:function setUint32Property() {
 
 -     [native code]
 
 - }
 
 - isKilled:false
 
 - markRead:function markRead() {
 
 -     [native code]
 
 - }
 
 - markFlagged:function markFlagged() {
 
 -     [native code]
 
 - }
 
 - priority:1
 
 - setPriorityString:function setPriorityString() {
 
 -     [native code]
 
 - }
 
 - OrFlags:function OrFlags() {
 
 -     [native code]
 
 - }
 
 - AndFlags:function AndFlags() {
 
 -     [native code]
 
 - }
 
 - threadId:1385437452
 
 - messageKey:1385437452
 
 - threadParent:4294967295
 
 - lineCount:0
 
 - statusOffset:0
 
 - messageOffset:5612
 
 - offlineMessageSize:794
 
 - dateInSeconds:1409110867
 
 - bccList:
 
 - subject:sfg
 
 - setReferences:function setReferences() {
 
 -     [native code]
 
 - }
 
 - numReferences:0
 
 - getStringReference:function getStringReference() {
 
 -     [native code]
 
 - }
 
 - setRecipientsArray:function setRecipientsArray() {
 
 -     [native code]
 
 - }
 
 - setCCListArray:function setCCListArray() {
 
 -     [native code]
 
 - }
 
 - setBCCListArray:function setBCCListArray() {
 
 -     [native code]
 
 - }
 
 - mime2DecodedAuthor:hechengjin88 <hechengjin88@126.com>
 
 - getAuthorCollationKey:function getAuthorCollationKey() {
 
 -     [native code]
 
 - }
 
 - getSubjectCollationKey:function getSubjectCollationKey() {
 
 -     [native code]
 
 - }
 
 - getRecipientsCollationKey:function getRecipientsCollationKey() {
 
 -     [native code]
 
 - }
 
 - Charset:UTF-8
 
 - propertyEnumerator:[xpconnect wrapped nsIUTF8StringEnumerator]
 
 
  复制代码 写信页,缓存窗口打开执行的js函数 
onReopen: function(params) { 
 
写信页中,做为新邮件编辑里,收信人等内容的加载会延时 
fillRecipient_EditAsNew 
if(iTo == countOfTo) //故在每一个延时后都要重新收集下联系人 
        { 
          saveRecipientsForCheck(); 
        } 
 
 
另外:收信人等编辑框内含有计数机制,当移除不成功时,应该是计数没有减到0 
且移除方法要注意索引的动态变化 
var ccleng = gAddressCc.items.length; 
         for (let i = 0; i < ccleng; i++) 
        {         
              gAddressCc.removeItemAt(0);          
 
        } 
 
 |   
 
 
 
 |