【发布时间】:2019-12-30 13:38:29
【问题描述】:
我必须对现有代码进行修改,并且我正在努力使用 mailto 功能。我希望当我提交表单时,会使用 Outlook(或配置的任何其他邮件程序)打开预先填充的邮件,以便用户可以检查是否一切正常,然后提交带有表单数据的邮件。
我想使用mailto:,因为目前该页面(即在本地服务器上,而不是在互联网上)仅适用于 IE(最后一个开发人员使用 ActiveX 数据对象,它不适用于 Edge/Chrome /火狐)。
我已经尝试将mailto: 放在表单的action 标记中,但没有成功,我也尝试了一些javascript,但发生了同样的情况。此外,我的表单使用 $_SERVER['PHP_SELF'] 全局变量提交给自己。
表格/代码很大,所以我只会把可能对你有用的部分放在帮助我的地方。
这是我使用的表格:
echo "<FORM action=". $_SERVER['PHP_SELF'] . " name=\"form\" method=\"POST\">";
"my form here"
echo "<input type=\"submit\" name=\"Envoyer\" value=\"Send\"/>";
echo "</FORM>";
然后,我想从表单中获取数据并在用户点击提交按钮时打开一个邮件程序,其中包含一个预填充的邮件,其中包含数据。
这是我使用的:
echo "<script>
var email = $maildest;
var subject = \"Request of the user\";
var emailBody = $MAIL;
window.location = \"mailto:\"+email+\"?subject=\"+subject+\"&body=\"+emailBody;";
echo "</script>";
echo "An OUTLOOK window opened with the informations you entered. <br/>Send the email so we can take it into account.<br/>
exit(0);
我没有任何错误消息,页面工作正常,但是当我点击提交按钮时,没有任何反应,甚至邮件程序打开窗口或其他任何东西都没有。我确定我缺少一些东西,而且我对 php/html/javascript 有点生疏,所以我来这里寻求您的帮助。
【问题讨论】:
-
所以明显的问题是你在最后一行没有变量
window.location = `mailto:?subject=&body=`;它应该看起来像window.location = `mailto:${email}?subject=${subject}&body=${emailBody}`; -
需要在最后一行的echo中使用单引号
echo 'window.location = `mailto:${email}?subject=${subject}&body=${emailBody}`;'; -
哦,是的,现在它可以工作了.. 我觉得很愚蠢 lmao.. 我知道这是关于引号和东西的,当你不经常编码时,这件事很难.. 我有最后一个问题:我的邮件正文是用 HTML 编写的,但 mailto 似乎没有重新创建它,我在预先填充的邮件中拥有所有标签。我应该使用一些东西来正确编码吗?
-
没有。您不能使用 mailto 发送 HTML,我确实建议您根本不使用 echo
-
是的,我知道,但这不是我的代码,我只对其进行一些更改,直到有人回来,我不想更改他所做的一切......所以我不能用 html 格式化我的邮件?还有其他方法吗?像 /n 等。这只是一些基本的东西
标签: javascript php html forms mailto