Я создаю расширение Thunderbird и хотел бы добавить свой собственный заголовок ко всем исходящим сообщениям электронной почты (например, ‹myext-version: 1.0›). есть идеи как это сделать? Я знаю, что это возможно, так как это делается в расширении OpenPGP Enigmail. Спасибо!
Как вы вставляете заголовки электронной почты с расширением Thunderbird?
Ответы (2)
Вот код одного расширения, над которым я работаю:
function SendObserver() {
this.register();
}
SendObserver.prototype = {
observe: function(subject, topic, data) {
/* thunderbird sends a notification even when it's only saving the message as a draft.
* We examine the caller chain to check for valid send notifications
*/
var f = this.observe;
while (f) {
if(/Save/.test(f.name)) {
print("Ignoring send notification because we're probably autosaving or saving as a draft/template");
return;
}
f = f.caller;
}
// add your headers here, separated by \r\n
subject.gMsgCompose.compFields.otherRandomHeaders += "x-test: test\r\n";
}
},
register: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.addObserver(this, "mail:composeOnSend", false);
},
unregister: function() {
var observerService = Components.classes["@mozilla.org/observer-service;1"]
.getService(Components.interfaces.nsIObserverService);
observerService.removeObserver(this, "mail:composeOnSend");
}
};
/*
* Register observer for send events. Check for event target to ensure that the
* compose window is loaded/unloaded (and not the content of the editor).
*
* Unregister to prevent memory leaks (as per MDC documentation).
*/
var sendObserver;
window.addEventListener('load', function (e) {if (e.target == document) sendObserver = new SendObserver(); }, true);
window.addEventListener('unload', function (e) { if (e.target == document) sendObserver.unregister();}, true);
Поместите это в файл .js, который загружается окном создания (например, путем наложения chrome://messenger/content/messengercompose/messengercompose.xul).
Проверка в SendObserver.observe была необходима в моем случае, потому что я хотел выполнить взаимодействие с пользователем, но вы, вероятно, могли бы ее пропустить.
Я не знаю ответа, просто некоторые мысли...
Я думаю, что расширения Thunderbird обычно представляют собой просто xul и js. С сайта enigmail:
В отличие от большинства надстроек Mozilla, Enigmail содержит части, зависящие от платформы: он зависит от процессора, компилятора, библиотек операционной системы и почтового приложения, в которое он должен интегрироваться.
Глядя на исходный код Enigmail, это может быть соответствующий раздел (написано на C++)
Так что вам может понадобиться либо перевести то, что они сделали, в js(!) либо продолжать искать другой пример.
Вот еще одна ссылка, которая может оказаться полезной