Ali*_*Ali 11 html gmail urlencode
大家好我发现,要打开GMAIL撰写屏幕,您必须登录并打开以下链接:
替换变量将填写撰写表单上的相应位置.但是,如果我想进入身体多行文本或换行符,即使我对其进行了urlencode也无法正常工作.这里有什么想法?
Ant*_*ull 14
检查您的UrlEncode方法是否真的将换行符转换为"%0a".以下是2行电子邮件正文的示例:
Gmail支持HTML5的registerProtocolHandler()发出的内容.
例:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test");
Run Code Online (Sandbox Code Playgroud)
这就是Gmail希望您使用的内容.当然,修改特定于域的组合URI的开头.
但是,它会自动加载撰写表单(未与收件箱页面集成).因此,如果您希望将撰写表单集成到收件箱页面中,则需要加载:
"https://mail.google.com/mail/?compose=1&view=cm&fs=1&to=1&su=2&body=3&cc=4&bcc=5"
Run Code Online (Sandbox Code Playgroud)
代替.但是,这需要您首先解析mailto URI以获取hfvalues并修复其百分比编码以确保它们适合发送HTTP URI.有关详细信息,请参见下文.
现在,Gmail对HTML5撰写URI的作用是百分比解码url param以获取mailto URI.然后,它解析mailto URI以获取hfvalues.然后,它使用这些hfvalues来构建类似于收件箱集成的URI,并将您重定向到它.
Gmail的HTML5方法存在的问题是,它不会将hfvalues中的"+"字符编码为"%2B".最终结果是mailto URI中的"+"字符(它们不是mailto URI中的空格)在Gmail撰写表单中以空格形式出现.
要解决Gmail错误,您只需执行以下操作:
var compose = "https://mail.google.com/mail/?extsrc=mailto&url=" + encodeURIComponent("mailto:?subject=test".replace(/\+/g, "%2B"));
Run Code Online (Sandbox Code Playgroud)
代替.
该错误是在几年前报告的,但Gmail拒绝修复它.
正如您还应该看到的,对于收件箱集成的组合URI,如果您有mailto URI"mailto:?subject = 1 + 2",则需要确保在compose URI中发出su = 1%2B2而不是SU = 1 + 2.后者将导致空间位于主题字段而不是"+".这部分不是Gmail的错误.这就是HTTP的工作原理.
您可以看到我的Gmail Compose Extension for Opera的源代码(解压缩它)以了解我如何使用HTML5方式.这很简单.但是,它不包含+到%2B的解决方法.
但是,您可以看到我正在测试的更新版本的扩展(只需要有人在首选项中测试特定于域的选项)以获得更高级的处理.这一次使用我的自定义,通用的mailto URI解析器正常化的mailto URI及其hfvalues处理"+"的情况下,不安全的字符和重复hfvalues.它还提供了一个选项,可以选择是否要使用HTML5撰写URI.
您还可以查看Opera的这个用户JS脚本,了解如何执行操作.
对于前面提到的重复hfvalue问题和其他mailto URI内容,请参阅我的mailto URI规范,该规范用于RFC6068的研究和反馈.
注意:仅仅因为Gmail用户启用了丰富的文本编辑功能,这并不意味着Gmail会在撰写URI中接受HTML标记并将其视为此类处理.它都被解释为文本.
| 归档时间: |
|
| 查看次数: |
14580 次 |
| 最近记录: |