2008-10-02 14 views
7

Estoy construyendo una extensión de Thunderbird y me gustaría agregar mi propio encabezado a todos los correos electrónicos salientes (por ejemplo, < myext-versión: 1.0 >). ¿Alguna idea de cómo hacer esto? Sé que es posible, ya que esto se hace en la extensión OpenPGP Enigmail. ¡Gracias!¿Cómo insertar encabezados de correo electrónico con una extensión de Thunderbird?

+0

¿Esto no pertenece a superuser.com? –

+1

Es apropiado ya que está codificando una extensión. Si busca una extensión existente, debería pertenecer a superuser.com. – studgeek

Respuesta

1

No sé la respuesta, pero sólo algunos pensamientos ...

creo extensiones de Thunderbird son por lo general sólo XUL y JS. Desde el sitio enigmail:

A diferencia de la mayoría de los addons de Mozilla, Enigmail contiene partes dependientes de plataforma: se depende de la CPU, el compilador, bibliotecas del sistema operativo y la aplicación de correo electrónico que se integrar en.

Si examina el código fuente de Enigmail, this might be the relevant section (escrito en C++)

lo que es posible que o bien traducir lo que han hecho en js (!) O seguir buscando un ejemplo diferente.

Here's another link that might be helpful

3

Aquí está el código de una extensión que estoy trabajando:

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); 

Ponga esto dentro de un archivo .js que se carga por la ventana de redacción (por ejemplo, mediante la superposición de chrome://messenger/content/messengercompose/messengercompose.xul).

El control en SendObserver.observe era necesario en mi caso porque quería hacer una interacción con el usuario, pero probablemente podría dejarlo fuera

Cuestiones relacionadas