Email 在Thunderbird扩展中获取邮件发件人
我正在开发一个非常简单的Thunderbird扩展,它应该在邮件发送时提醒发件人的姓名和收件人的姓名。问题是在下面的代码段中,gMsgCompose.compFields.from字段为空。to字段按预期工作,用于处理compose send message事件。我错过了什么Email 在Thunderbird扩展中获取邮件发件人,email,thunderbird,thunderbird-addon,Email,Thunderbird,Thunderbird Addon,我正在开发一个非常简单的Thunderbird扩展,它应该在邮件发送时提醒发件人的姓名和收件人的姓名。问题是在下面的代码段中,gMsgCompose.compFields.from字段为空。to字段按预期工作,用于处理compose send message事件。我错过了什么 function send_event_handler( evt ) { var msgcomposeWindow = document.getElementById( "msgcomposeWindow" ); var
function send_event_handler( evt ) {
var msgcomposeWindow = document.getElementById( "msgcomposeWindow" );
var msg_type = msgcomposeWindow.getAttribute( "msgtype" );
// do not continue unless this is an actual send event
if( !(msg_type == nsIMsgCompDeliverMode.Now || msg_type == nsIMsgCompDeliverMode.Later) )
return;
var promptService = Components.classes["@mozilla.org/embedcomp/prompt-service;1"].getService(Components.interfaces.nsIPromptService);
promptService.alert(window, "From", gMsgCompose.compFields.from);
promptService.alert(window, "To", gMsgCompose.compFields.to);
}
window.addEventListener( "compose-send-message", send_event_handler, true );
您可以通过msgIdentity小部件获取发送标识:
var identityWidget = document.getElementById('msgIdentity');
var fromIdentityKey= self.identityWidget.value;
然后,使用帐户管理器查找身份信息:
var acctMgr = Components.classes["@mozilla.org/messenger/account-manager;1"]
.getService(Components.interfaces.nsIMsgAccountManager);
var accounts = acctMgr.accounts;
for (var i = 0; i < accounts.Count(); i++) {
var account = accounts.QueryElementAt(i, Components.interfaces.nsIMsgAccount);
var accountIdentities = account.identities;
for(var identCount = 0; identCount < accountIdentities.Count(); identCount++) {
var identity = accountIdentities.QueryElementAt(identCount,
Components.interfaces.nsIMsgIdentity);
if(identity.key == fromIdentityKey) {
// Identity found
alert(identity.email);
}
}
}
或者在TB 7.0+中更方便&简单地说:
alert(gCurrentIdentity.email);
不需要获取服务和迭代,它已经由TB设置,请参阅