命令行参数无效验证您正在使用的交换机

时间:2015-06-22 13:27:46

标签: javascript outlook outlook-addin mailto

当用户使用javascript mailto:

点击表单的提交按钮时,我正在尝试打开Outlook

当我从chrome或firefox提交表单时,它能够打开但在IE中我收到以下错误:

命令行参数无效,请验证您正在使用的开关

2 个答案:

答案 0 :(得分:1)

我不确定你做了多少研究,但是当你查找错误时谷歌的第一个结果导致了一个似乎已经解决的微软主板:

https://support.microsoft.com/en-us/kb/312346

据我所见,您的问题与URI Schema" mailto"的文件关联有关。我建议您按照链接中的步骤进行操作,并在下次详尽搜索。

答案 1 :(得分:0)

Microsoft Knowledge Base article很有帮助,但这只是一种解决方法:

  • 即。如果我将默认程序更改为" Mail Express" (Windows 10),在IE中单击mailto会导致导致问题;电子邮件将在" Mail Express"并且可以立即发送
  • 但是,如果我将默认程序更改回" Outlook 2016" (Windows 10),在IE 中单击mailto确实会导致问题:"命令行参数无效验证您正在使用的交换机"

<强>问题:

我的mailto值来自Angular,而我的mailto有特殊字符。我只能使用Angular's ng-href (JSFiddle)重新创建此问题。我无法使用plain HTML (JSFiddle)重新创建此问题。

<强>解决方案:

Solution JSFiddle here;我的问题再次针对Angular / ng-href,因此我的解决方案使用Angular / ng-href

在我的情况下,我的mailto href属性值包括双引号(即'"')。双引号是转义(带反斜杠),但是没有编码我需要URLEncode我的mailto值。这很直观,因为href属性通常指向一个网址,URLs require percent-encoding.

<a href="mailto:person@place.com?subject=Subject includes \"double-quotes\"">Mail link</a>

当我encodeURIComponent时,只有 subject 值:encodeURIComponent("Subject includes \"double-quotes\"")并更新该部分。结果在这里;注意新主题中的%20和%22:

<a href="mailto:person@place.com?subject=Subject%20includes%20%22double-quotes%22">Mail link</a>

注意

我有双引号(即'"'或%22),但不同的字符可能导致问题:我怀疑{{3}可能会导致此问题。

看起来空格(即' '或%20)不会导致问题,即使编码前的也是如此。 之后我开始使用encodeURIComponent,我可能修复了可能导致此问题的任何/所有其他花哨字符,即'&'或其他人。 。)

我不确定other URL-unsafe characters;即,subject参数的处理方式与body参数或隐含的to参数不同。所以我对encodeURIComponentsubject使用了body

小心进行过度编码。仅对单独的subjectbody参数进行编码:

  • 对冒号进行编码(即:后面的mailto;浏览器可能无法识别这是mailto链接(请参阅解决方案)
  • 对问号(即?)或等号(即=)进行编码;浏览器/ Outlook可能无法解析参数(请参阅解决方案)

所以当我编码:

encodeURIComponent("mailto:person@place.com?subject=Subject includes \"double-quotes\"")

注意结果;错误地编码冒号(即%3A)和等号(%3D)

 "mailto%3Aperson%40place.com%3Fsubject%3DSubject%20includes%20%22double-quotes%22"

小心不要双重编码,即编码已编码的字符串!

我将从问题中删除Java标记;我同意评论parameters have different requirements