Thunderbird - odeslání mailu s content-id přílohami

Diskuse týkající se vývoje doplňků pro aplikace Mozilla a přístupných webů.
Kaven
Příspěvky: 1
Registrován: 11.01.2016 10:27

Thunderbird - odeslání mailu s content-id přílohami

Příspěvekod Kaven » 11.01.2016 10:39

Vytvářím pro vlastní účely add-on pro Thunderbird, který bude odesílat maily na základě dat přijatých z TCP socketu. Na leccos jsem přišel, ale neumím do mailu přiložit obrázek s nastaveným Content-id, aby bylo možno ho potom z těla zprávy použít přes <img src="cid:...">. nsIMsgAttachment na to dle dokumentace žádný parametr nemá, a nevím ani jak jinak to udělat.

K odeslání mailu posílám tuto funkci (vytvoří mail dle vlastního objektu maildef, který specifikuje jednotlivé části mailu).

Kód: Vybrat vše

SendMessage: function(maildef, identity) {
    var composeService = Components.classes["@mozilla.org/messengercompose;1"].getService(Components.interfaces.nsIMsgComposeService);

    if (!identity)
        identity = composeService.defaultIdentity;

    var composeFields = Components.classes["@mozilla.org/messengercompose/composefields;1"].createInstance(Components.interfaces.nsIMsgCompFields);
    composeFields.to = maildef.to;
    composeFields.from = identity.identityName;
    composeFields.body = maildef.body;
    composeFields.subject = maildef.subject;
    //composeFields.characterSet = 'UTF-8';

    if (maildef.html) {
        composeFields.forcePlainText = false;
        composeFields.useMultipartAlternative = false;
    }
    else {
        composeFields.forcePlainText = true;
        composeFields.useMultipartAlternative = false;
    }


    if (maildef.attachments) {
        for(var i = 0; i < maildef.attachments.length; i++) {
            var attachment = Components.classes["@mozilla.org/messengercompose/attachment;1"].createInstance(Components.interfaces.nsIMsgAttachment);
            attachment.contentType = maildef.attachments[i].mime;
            attachment.url = 'file://' + maildef.attachments[i].path;
            attachment.name = maildef.attachments[i].name;
            attachment.temporary = false;

            composeFields.addAttachment(attachment);
        }
    }

    var MsgComposeParams = Components.classes["@mozilla.org/messengercompose/composeparams;1"]
            .createInstance(Components.interfaces.nsIMsgComposeParams);
    MsgComposeParams.composeFields = composeFields;

    if (maildef.html)
        MsgComposeParams.format = 1;
    else           
        MsgComposeParams.format = 2;

    var msgCompose = Components.classes["@mozilla.org/messengercompose/compose;1"].createInstance(Components.interfaces.nsIMsgCompose);

    msgCompose.initialize(MsgComposeParams);
    msgCompose.SendMsg(1, identity, identity.key ,null,null);
}

Zpět na “Vývoj doplňků, webů a technická evangelizace”