Mailto模板在"粘贴到urlbar"但是没有在"注册和点击mailto链接"

时间:2014-08-04 10:28:09

标签: firefox-addon

这是最奇怪的事情。我有一个Hotmail / Live邮件/ Outlook邮件帐户。因此,开始撰写电子邮件的模板是:

http://mail.live.com/secure/start?action=compose&to=%s

我已尝试使用以下代码添加https://mail.google.com/mail/?extsrc=mailto&url=%s的Gmail处理程序模板,然后点击mailto:链接,它可以正常工作。

要复制:

  1. 请运行此代码,它将创建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);
    
  2. 点击mailto链接。例如,我点击了我的插件页面上的“支持电子邮件”:https://addons.mozilla.org/en-US/firefox/addon/mailtowebmails/链接是mailto:noitidart

  3. 它在Hotmail中打开,但是到了mailto:

    funky to

  4. 为什么mailto在步骤3中不起作用?

    如果您只是粘贴到网址栏中:http://mail.live.com/secure/start?action=compose&to=noitidart@gmail.com它会加载正常。

1 个答案:

答案 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