表示电子邮件正文文本的字符串必须满足哪些条件才能使用 mailto 成功传递到电子邮件正文



我正在尝试使用 HTML 表单使用 mailto 函数,用 ASP 字符串变量中的一些预定义文本填充新消息。我正在使用语法

<form action="MAILTO:someone@example.com?subject=<%= eSubject%>&body=<%= eBody%>" method="POST" enctype="text/plain">

其中eSubjecteBody是从从数据库中读取的值中提取并编辑的字符串变量,以便它们使用%20而不是空格和%0D%0A来表示新行。该表单不包含任何输入,并使用JavaScript直接提交。

我已经研究了我尝试传递给正文文本的字符串长度可能存在的问题(例如,发布 mailto: 表单时对邮件正文的限制(,但我得到的印象是它取决于浏览器,只有在相当高的字符数下才会成为一个问题(取决于我的输入,对于我的eBody字符串,这在 ~380 到 400 之间变化,但永远不会超过 400(。

最令人沮丧的是,我的主题字符串(一行(根据需要填充了新电子邮件的主题行。这可能与尝试在我的字符串中使用换行符有关吗?主题行的示例如下:

Query%20-%20Birmingham%20-%2025/03/2015%20at%2013:30

生成主题行

Query - Birmingham - 25/03/2015 at 13:30

我很清楚,对有关使用mailto的问题的一般回答是"你为什么要这样做?!",但在这种情况下,这是合适的,因为这个想法是创建一个始终包含eBody的电子邮件(发送给客户服务的一些信息,以准确显示发送查询时发生的事情(来自发送电子邮件的人的消息, 每次都会有所不同。

任何建设性的帮助将不胜感激。谢谢

似乎最大字符数可能因浏览器而异,也因电子邮件客户端而异(绕过邮件/href/url字符限制(。

关于这个问题的公认答案(有效最大邮件长度:正文长度(提到Outlook Express的限制是456个字符(可能针对整个mailto链接(。因此,根据您的浏览器和可能的客户端,您可能会遇到限制。关于这个问题的另一个答案也可以让你运行一些测试。

w3c mailto:标准指出:

根据 RFC 822,可能会出现字符"?"、"&"甚至"%" 在地址规范中。它们是此 URL 中的保留字符的事实 方案不是问题:这些字符可能会出现在 mailto URL 中, 它们可能不会以未编码的形式出现。标准网址编码 机制("%"后跟两位十六进制数字(必须在 某些情况。 ...

如上所述,"&"(与号(字符保留在 HTML 中 并且必须替换为"&"。因此,一个复杂的 URL 具有 内部与号可能如下所示:

Click <a href="mailto:?to=joe@xyz.com&amp;cc=bob@xyz.com&amp;body=hello"> mailto:?to=joe@xyz.com&amp;cc=bob@xyz.com&amp;body=hello</a> to send a greeting message to <i>Joe and Bob</i>.

因此,您的示例;

<form action="MAILTO:someone@example.com?subject=<%= eSubject%>&body=<%= eBody%>" method="POST" enctype="text/plain">

可能应该对&body进行编码,使其变得&amp;body

<form action="MAILTO:someone@example.com?subject=<%= eSubject%>&amp;body=<%= eBody%>" method="POST" enctype="text/plain">

最新更新