龙空技术网

电子邮件Mailto的一些参数用法(地址栏传值乱码问题)

迪博微 152

前言:

当前我们对“html地址栏参数”大约比较看重,朋友们都需要分析一些“html地址栏参数”的相关内容。那么小编也在网摘上汇集了一些关于“html地址栏参数””的相关内容,希望小伙伴们能喜欢,我们一起来了解一下吧!

电子邮件能让访问者方便地向网站提供反馈或联系信息。它可以自动填写抄送和密件抄送,甚至能自动填充主题行。下面介绍如何定制 Mailto功能。

实现 Mailto的基本html代码:

<a href="mailto:stephen.zhaoyf@163.com">点击这里发邮件给站长!</a>

当访问者点击这个链接时,会调用他们客户端的email程序,并在收件人框中自动填上收件人的地址。下面,我们将分以下几步介绍如何增加mailto的功能。

第一步:

创建一个基本的mailto,包含收件人的地址。注意:后面的参数符需要采用英文的符号

第二步:

在收件人地址后用“?cc="开头,你可以填写抄送(CC:)地址,下面这个例子将实现该功能:

<a href="mailto:stephen.zhaoyf@163.com?cc=guest@163.net">点击这里发邮件给站长并“抄送”给guest!</a>

第三步:

就像下面这个例子一样,紧跟着抄送地址之后,写上"&bcc=",就可以填上密件抄送(BCC)地址了 (在添加这些功能时,第一个功能以"?"开头,后面的以"&"开头)

<a href="mailto:stephen.zhaoyf@163.com?cc=guest@163.net&bcc=guest@163.net">点击这里发邮件给站长并同时“抄送”、“暗送”给guest!</a>

还可以同时发信给N个人!地址之间用逗号分开:

<a href="mailto:stephen.zhaoyf@163.com,guest@163.net,guest1@163.net">点击这里同时发送N个邮件!</a>

第四步:

用?subject=或者&subject(当前面还有抄送或暗送时使用)填上主题。

<a href="mailto:stephen.zhaoyf@163.com?subject=不好意思,只是做个实验!">点击这里发送有主题的邮件!</a>

更加夸张的是连邮件内容都可以事先写好!

<a href="mailto:stephen.zhaoyf@163.com?subject=不好意思,只是做个实验!&body=特别无聊,所以发现这么一个功能">这个邮件地址、内容都有了!以后可就懒了!</a>
下面我们来总结一下:

Mailto后为收件人地址,cc后为抄送地址,bcc后为密件抄送地址,subject后为邮件的主题,body后为邮件的内容,如果Mailto后面同时有多个参数的话,第一个参数必须以“?”开头,后面的每一个都以“&”开头。下面是一个完整的实例:

Mailto:aaa@xxx.com?cc=bbb@yyy.com&bcc=ccc@zzz.com&subject=主题&body=邮件内容
乱码问题:

比如调用个下载程序,当下载的URL中含有中文的时候,无法下载,比如:

汇编

试着用 .net 中的 Server.UrlEncode 函数进行转换。但是这样仍然不行,试验了很久也没有找到原因。后来怀疑 ASP.net中的Server.UrlEncode函数和ASP中的Server.URLEncode函数返回的值竟然不一样。一实验,竟然确实是。

试验代码:

ASP.net 中 如下代码?

Response.Write(Server.UrlEncode("汇编")); ?返回: %e6%b1%87%e7%bc%96

ASP 中 如下代码 Response.Write Server.URLEncode("汇编")?? 返回: %BB%E3%B1%E0

产生这个问题的原因:ASP.net 中的 Server.UrlEncode 默认是按照 UTF-8 编码方式进行处理的。而ASP中是按照本地设置编码方式进行处理的。

如果你在 ASP.net 下采用如下的编码: ASP 和 ASP.net 的结果就会一样:

Response.Write(HttpUtility.UrlEncode("汇编",Encoding.Default));

采用:Response.Write(HttpUtility.UrlEncode("汇编",Encoding.UTF8));? 返回的就是 Response.Write(Server.UrlEncode("汇编"));?? 返回的结果。

标签: #html地址栏参数