gpt4 book ai didi

javascript - 从 Thunderbird 保存电子邮件正文及其附件

转载 作者:行者123 更新时间:2023-11-29 18:30:44 25 4
gpt4 key购买 nike

我正在尝试使用自定义插件从 javascript 中保存电子邮件正文及其附件,但我无法按照 http://forums.mozillazine.org/viewtopic.php?f=19&t=2030903 中的描述进行操作你有什么建议吗?电子邮件正文是否可以保存为原生 EML 格式?谢谢!

alert("Messages selected: " + gFolderDisplay.selectedCount);
let enumerator = gFolderDisplay.selectedMessages;
for each (let msgHdr in fixIterator(enumerator, Ci.nsIMsgDBHdr)) {
var messageID = msgHdr.messageId;
alert("MessageID: " + messageID);
var subject = msgHdr.mime2DecodedSubject;
alert("Subject: " + subject);
MsgHdrToMimeMessage(msgHdr, null, function (aMsgHdr, aMimeMsg) {
try {
alert("Size of the message: " + aMimeMsg.size);
alert("Structure of the message:\n" + aMimeMsg.prettyString(true, undefined, true));
let attachments = aMimeMsg.allUserAttachments || aMimeMsg.allAttachments;
alert("Number of attachments: " + attachments.length);
for (let [index, att] in Iterator(attachments))
{
alert ("URL: " + att.url + " Name: " + att.name);
let ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
let neckoURL = null;
neckoURL = ioService.newURI(att.url, null, null);
neckoURL.QueryInterface(Ci.nsIMsgMessageUrl);
let uri = neckoURL.uri;
let attInfo = new AttachmentInfo(att.contentType, att.url, att.name, uri, att.isExternal);
attInfo.save();
}
} catch (err) {
alert(err);
}
}, true, { examineEncryptedParts: true, });
}

[编辑] 上面的代码确实保存了附件,但它打开了另存为对话框。可以悄悄地做吗?电子邮件正文是否可以保存为原生 EML 格式?谢谢你! [/编辑]

最佳答案

上面的例子是我写的。您几乎完成了,并且找出了最难的部分。这是我刚刚为弄清楚如何回答您的问题所做的。

  1. 我在 AttachmentInfo 上运行了一个 mxr 搜索,结果是在 http://mxr.mozilla.org/comm-central/source/mail/base/content/msgHdrViewOverlay.js#1643 处定义的
  2. 原来save 只是nsIMessenger::saveAttachment 的一个代理,定义在http://mxr.mozilla.org/comm-central/source/mailnews/base/public/nsIMessenger.idl#81
  3. 事实证明那里还有一个saveAttachmentToFile 方法!可能是你需要的。阅读定义,似乎是个不错的选择 http://mxr.mozilla.org/comm-central/source/mailnews/base/src/nsMessenger.cpp#614

您可能需要向函数传递一个已打开的 nsIFile(请参阅 https://developer.mozilla.org/en/XPCOM_Interface_Reference/nsIFile,因为那里有很好的引用资料),以及附件的 URI(在您的代码中以 uri 形式提供) 、消息的 uri(可能类似于 msgHdr.folder.getUriForMsg(msgHdr))、内容类型(此处为 att.contentType)和实现 的监听器code>nsIUrlListener(此处定义:http://mxr.mozilla.org/comm-central/source/mailnews/base/public/nsIUrlListener.idl#48,请参阅 https://github.com/protz/GMail-Conversation-View/blob/master/modules/message.js#L1492 以获得非常准系统的实现——您可能应该在那里挂接您自己的函数以检查一切是否正常)。

我没有尝试过这段代码,但我非常有信心指南是正确的。

关于javascript - 从 Thunderbird 保存电子邮件正文及其附件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713251/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com