|
沙发

楼主 |
发表于 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);
}
|
|