Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1629|回复: 2
打印 上一主题 下一主题

存草稿处理流程

[复制链接]

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
跳转到指定楼层
楼主
发表于 2016-4-21 00:13:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


提示信息合并,只弹一个对话框,如果在线存草稿不成功,是否可存离线草稿












回复

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
沙发
 楼主| 发表于 2016-4-21 00:13:51 | 只看该作者
goDoCommand('cmd_saveDefault')
MsgComposeCommands.js
cmd_saveDefault: {
      isEnabled: function() {
        return !gWindowLocked;
      },
      doCommand: function() {
        Save();
      }
    },

function Save()
{
  switch (defaultSaveOperation)
  {
    case "file"     : SaveAsFile(false);      break;
    case "template" : SaveAsTemplate(false);  break;
    case "send" : SaveAsSend(false);  break;
    default         : SaveAsDraft(false);     break;
  }
}


GenericSendMessage_Ori(nsIMsgCompDeliverMode.SaveAsDraft);
{
var progress = Components.classes["@mozilla.org/messenger/progress;1"]
            .createInstance(Components.interfaces.nsIMsgProgress);
        if (progress)
        {
            //alert("1 registerListener");
            progress.registerListener(progressListener);
            gSendOrSaveOperationInProgress = true;
        }


gMsgCompose.SendMsg(msgType, getCurrentIdentity(),
            getCurrentAccountKey(), msgWindow, progress);


}


nsMsgComposeAndSend::SendToMagicFolder(nsMsgDeliverMode mode)
{
nsresult rv = MimeDoFCC(mTempFile,
                            mode,
                            mCompFields->GetBcc(),
                            mCompFields->GetFcc(),
                            mCompFields->GetNewspostUrl(),
                            mCompFields->GetSendName());

if (NS_FAILED(rv))
      rv = NotifyListenerOnStopCopy(rv);

}

MimeDoFCC(nsIFile          *input_file,...
{
//nscopy.tmp
}

nsMsgComposeAndSend::NotifyListenerOnStopCopy(nsresult aStatus)
{
  mComposeBundle->GetStringFromID(NS_MSG_START_COPY_MESSAGE_FAILED, getter_Copies(msg));
#ifdef PR_LOGGING
  nsAutoString tempString1(msg.get());
  char * utf8String1 = ToNewUTF8String(tempString1);
  PR_LOG(gnsMsgSendLog, PR_LOG_ALWAYS,("NotifyListenerOnStopCopy msg:%s  [%s:%d-%s]",utf8String1,__FILE__, __LINE__,__FUNCTION__));
#endif
  SetStatusMessage(msg); //复制失败。  ---- 进度条上显示的内容

if (NS_SUCCEEDED(rv))
    {
#ifdef PR_LOGGING
                nsAutoString tempString(msg.get());
                char * utf8String = ToNewUTF8String(tempString);
                PR_LOG(gnsMsgSendLog, PR_LOG_ALWAYS,("NotifyListenerOnStopCopy msg2:%s  [%s:%d-%s]",utf8String,__FILE__, __LINE__,__FUNCTION__));
#endif
      nsMsgDisplayMessageByString(prompt, msg.get(), nullptr);   //保存邮件到 草稿箱 时出错    ----中间弹出的提示窗口,没有失败原因

}
回复 支持 反对

使用道具 举报

388

主题

602

帖子

2218

积分

金牌会员

Rank: 6Rank: 6

积分
2218
板凳
 楼主| 发表于 2016-4-21 00:14:13 | 只看该作者
  1. nsMsgCompose::NS_IMETHODIMP nsMsgCompose::SendMsg(MSG_Del...)
  2. {
  3. rv = _SendMsg(deliverMode, identity, accountKey, entityConversionDone);
  4.   if (NS_FAILED(rv))
  5.   {

  6. }
  7. nsMsgCompose::_SendMsg(int deliverMode, nsIMsgIdentity * identity, const char * accountKey, bool entityConversionDone)  
  8. nsMsgComposeAndSend::CreateAndSendMessage(nsIEditor * aEditor, nsIMsgIdentity * aUserIdentity, const char * aAccou
  9. nsMsgComposeAndSend::Init(nsIMsgIdentity * aUserIdentity, const char * aAccountKey, nsMsgCompFields
  10. nsMsgComposeAndSend::HackAttachments(nsIArray * attachments, nsIArray * preloadedAttachments)  
  11. nsMsgComposeAndSend::GatherMimeAttachments()  nsMsgComposeAndSend::DeliverMessage()  {
  12. if (shouldDeleteDeliveryState)
  13.   {
  14.     if (NS_FAILED(status))
  15.     {
  16.       m_status = status;
  17.       nsresult ignoreMe;
  18.       Fail (status, nullptr, &ignoreMe);
  19.     }
  20.   }

  21. }
  22. nsMsgComposeAndSend::SendToMagicFolder(int mode)  
  23. nsMsgComposeAndSend::MimeDoFCC(nsIFile * input_file, int mode, const char * bcc_header, const char * fcc_header, const char * news_url, const char * custom_url)



  24. nsMsgComposeAndSend::NotifyListenerOnStopCopy(unsigned int aStatus)  

  25. {
  26. else if (NS_FAILED(aStatus))
  27.   {
  28.     //
  29.     // If we hit here, the ASYNC copy operation FAILED and we should at least tell the
  30.     // user that it did fail but the send operation has already succeeded. This only if
  31.     // we are sending the message and not just saving it!

  32.     Fail(aStatus, nullptr, &aStatus);
  33.   }

  34. }

  35. nsMsgComposeAndSend::Fail(nsresult failure_code, const PRUnichar * error_msg, nsresult *_retval)
  36. {
  37. // 当发生错误的时候,如果是保存草稿出现错误,不显示displayReport     防止窗口的弹出内容:(邮件保存为草稿失败,请验证帐户设置信息并重试。请确认您的邮件帐户设置是否正确,然后重试)
  38.       if (m_deliver_mode != nsMsgSaveAsDraft)
  39.         mSendReport->DisplayReport(prompt, true, true, _retval);

  40. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|firemail ( 粤ICP备15085507号-1 )

GMT+8, 2024-4-29 01:27 , Processed in 0.062852 second(s), 21 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表