|
发送逻辑
src\app\conversations\modules\stdlib\send.js
function sendMessage(aParams,...
gMsgCompose.SendMsg(deliverType, identity, identity.key, options && options.msgWindow, progress);
\mailnews\compose\src\nsMsgCompose.cpp
nsMsgCompose::SendMsg
nsMsgCompose::_SendMsg
\mailnews\compose\src\nsMsgSend.cpp
nsMsgComposeAndSend::CreateAndSendMessage(
nsMsgComposeAndSend::Init(
nsMsgComposeAndSend::HackAttachments(nsIArray *attachments,
nsMsgComposeAndSend::GatherMimeAttachments() ///注意nsMsgAttachmentHandler这个会造成这个函数多次调用
发送后,保存到已发送方案
1. smtp copy ??
DoFcc() // mCompFields->GetFcc(); 如果保存到已经发送,这里执行邮件的拷贝操作,imap再对拷贝后的邮件进行同步
MimeDoFCC
还有另外一种逻辑?
FetcherURLDoneCallback(nsresult aStatus,
const nsACString &aContentType,
const nsACString &aCharset,
int32_t totalSize,
const char16_t* aMsg, void *tagData)
{
return ma->UrlExit(aStatus, aMsg);
}
nsMsgAttachmentHandler::UrlExit(nsresult status, const char16_t* aMsg)
{
status = m_mime_delivery_state->GatherMimeAttachments ();
}
nsMsgComposeAndSend::GatherMimeAttachments()
{
status = DeliverMessage();
}
nsMsgSend.cpp
nsMsgComposeAndSend:eliverMessage() {
return DeliverFileAsMail();
}
nsMsgComposeAndSend:eliverFileAsMail()
{
MsgDeliveryListener *deliveryListener = new MsgDeliveryListener(this, false); //mMsgSend->SendDeliveryCallback(url, mIsNewsDelivery, aExitCode);
nsCOMPtr<nsIInterfaceRequestor> callbacks;
GetNotificationCallbacks(getter_AddRefs(callbacks));
rv = smtpService->SendMailMessageWithExtraInfo(mTempFile, buf, mUserIdentity,
mSmtpPassword.get(), deliveryListener, msgStatus,
callbacks, mCompFields->GetDSN(),
to, subject,
getter_AddRefs(runningUrl),
getter_AddRefs(mRunningRequest));
}
2.imap append
mail.identity.default.fcc;true
mail.identity.id1.fcc_folder;imap://ccc@firemail.com/Sent %identitykey%
mail.identity.id1.fcc_folder_picker_mode;0 0已发送邮件夹 1其它自定义邮件夹
|
|