这是最奇怪的事情。我有一个Hotmail / Live邮件/ Outlook邮件帐户。因此,开始撰写电子邮件的模板是:
http://mail.live.com/secure/start?action=compose&to=%s
我已尝试使用以下代码添加https://mail.google.com/mail/?extsrc=mailto&url=%s
的Gmail处理程序模板,然后点击mailto:
链接,它可以正常工作。
要复制:
请运行此代码,它将创建Outlook处理程序并将其设置为活动状态。
//start - create handler
var handler = Cc["@mozilla.org/uriloader/web-handler-app;1"].createInstance(Ci.nsIWebHandlerApp);
handler.name = 'Outlook Live';
handler.uriTemplate = 'http://mail.live.com/secure/start?action=compose&to=%s';
//end - create handler
//start - add handler
var eps = Cc["@mozilla.org/uriloader/external-protocol-service;1"].getService(Ci.nsIExternalProtocolService);
var handlerInfo = eps.getProtocolHandlerInfo('mailto');
handlerInfo.possibleApplicationHandlers.appendElement(handler, false);
//end - add handler
//start - set as active handler
handlerInfo.preferredAction = Ci.nsIHandlerInfo.useHelperApp; //Ci.nsIHandlerInfo has keys: alwaysAsk:1, handleInternally:3, saveToDisk:0, useHelperApp:2, useSystemDefault:4
handlerInfo.preferredApplicationHandler = handler;
handlerInfo.alwaysAskBeforeHandling = false;
//end - set as active handler
var hs = Cc["@mozilla.org/uriloader/handler-service;1"].getService(Ci.nsIHandlerService);
hs.store(handlerInfo);
点击mailto链接。例如,我点击了我的插件页面上的“支持电子邮件”:https://addons.mozilla.org/en-US/firefox/addon/mailtowebmails/链接是mailto:noitidart
它在Hotmail中打开,但是到了mailto:
:
为什么mailto在步骤3中不起作用?
如果您只是粘贴到网址栏中:http://mail.live.com/secure/start?action=compose&to=noitidart@gmail.com它会加载正常。
答案 0 :(得分:1)
网络协议处理程序将发送完整的.spec
URI,这意味着它会发送mailto:abc@example.org
而不只发送abc@example.org
。
显然,http live.com端点无法处理。
然而,令人震惊的是,https live.com端点确实处理了它,即https://mail.live.com/secure/start?action=compose&to=mailto:abc@example.org
将从mailto:
URI中提取正确的地址。
因此,将您的网络协议模板URI更新为以下内容,您应该没问题(直到MS再次出现问题):
https://mail.live.com/secure/start?action=compose&to=%s