在表单操作中使用mailto的HTML表单电子邮件在Internet Explorer中不起作用

时间:2015-03-10 17:29:03

标签: html email mailto

我们的客户有一个register.html页面,其中包含一个非常简单的表单,允许用户输入他们的详细信息以便注册到客户网站。

表单操作设置为“mailto:clientsemail.client.com?subject = subject”。页面的enctype设置为text / plain,方法是post。

应该发生的是,用户电子邮件客户端打开时会显示一封新电子邮件,主题集和表单文本框会发布到表单正文中。然后网站访问者可以直接发送电子邮件。

我知道这不是很优雅,但它是如何设置的。

现在,这一切都按预期工作,并使用网络访问者电子邮件客户端将相当笨重的电子邮件发送到正确的地址,但仅限于Firefox,Chrome和Opera。 Safari完全错误,Internet Explorer打开电子邮件客户端并填充地址和主题字段,但表单输入不会复制到正文中。

有谁知道这是为什么?它让我疯狂。一直在看它,我在这个主题上发现的每个帖子都说明了它的设置正确并应该有效。没有提到它在IE中没有工作。

3 个答案:

答案 0 :(得分:1)

mailto:表单操作取决于浏览器和本地电子邮件客户端一起玩得很好。他们很少这样做mailto: form actions are unusable on the WWW

将其替换为发送电子邮件的服务器端程序。

答案 1 :(得分:1)

mailto标记只应接受以下参数:

  1. cc = name@email.com抄送电子邮件地址
  2. bcc=name@email.com盲目复制电子邮件地址
  3. subject =电子邮件的主题文本主题
  4. body =正文
  5. 丢弃所有其他输入参数(即FirstName,LastName等等)

    作为一种变通方法,您可以向表单添加隐藏的正文输入,并在提交事件中使用您想要的任何文本填充它。

    示例:

    <html>
    <head>
    <title></title>
    </head>
    <body>
        <script type="text/javascript">
            function beforeSubmit() {
                var firstName = document.getElementById("FirstName");
                var lastName = document.getElementById("LastName");
                var body = document.getElementById("body");
                body.value = firstName.value + lastName.value;
        }
    </script>
    
        <form action="mailto:me@myemailaddress.com" enctype="text/plain" onsubmit="beforeSubmit()">
            <input name="Subject" id="Subject" type="text" value="" /><br/>
            <input name="FirstName" id="FirstName" type="text" value="" /><br />
            <input name="LastName" id="LastName" type="text" value="" /><br />
            <input name="body" id="body" type="hidden" value="" /><br />
            <input name="Submit" id="submit" type="submit" value="Submit" /><br/>
            <input name="Reset" id="Reset" type="reset" value="Reset" /><br />
        </form>
    </body>
    

答案 2 :(得分:-1)

出于某种原因,IE不喜欢这种POST表单到电子邮件选项(适用于FF和Chrome)

你应该做那样的事情:

function sendFormToEmail() {
    var inputs = $('#infoForm :input');
    var bodyStr = "";
    inputs.each(function(index, value) {
        bodyStr += value.name + " = " + value.value + "   ,   ";
    });

    window.location = "mailto:Example@gmail.com?subject=subject&body=" + bodyStr;
}

并以您的形式:

<input type="button" class="button" value="Send Information" onclick="sendFormToEmail()" />