【问题标题】:How can I send a form's contents over e-mail with JavaScript?如何使用 JavaScript 通过电子邮件发送表单内容?
【发布时间】:2011-01-23 14:19:06
【问题描述】:

我有一个反馈 HTML 表单,我需要将其结果发送到一个电子邮件地址。我如何在 JavaScript 中做到这一点?

【问题讨论】:

    标签: javascript html email forms


    【解决方案1】:

    您唯一的选择是将其作为常规表单提交,然后在服务器端发送。

    【讨论】:

      【解决方案2】:

      不可能,仅使用 javascript,但在服务器端脚本的帮助下,您可以。

      请看php邮件功能here

      【讨论】:

        【解决方案3】:

        你有两个选择:

        1) 使用 mailto 链接。尽管您可以使用 Javascript 来“单击”mailto 链接,但实际上并不需要 Javascript。这将导致用户的电子邮件客户端打开一个预先填充了收件人电子邮件地址的新电子邮件。 mailto links mailto 链接不可靠的原因有很多(请参阅下面的 cmets)。不推荐使用它们。

        2) 将表单提交回服务器,然后从服务器发送电子邮件。无论服务器端代码是什么(php、c# 等)都应该能够发送电子邮件。这样您就可以保证电子邮件已发送。

        您不能从浏览器静默发送电子邮件。它必须在用户帮助下或在服务器上发生。

        【讨论】:

        • 不要使用 mailto 链接,它依赖于该用户实际安装了一个电子邮件客户端,该客户端具有可以发送电子邮件的有效电子邮件地址。大多数尝试使用 mailto 链接的电子邮件实际上从未被发送。编辑:例如,我什至没有在我的计算机上安装电子邮件客户端,因此我单击的任何 mailto 链接都会自动失败,因为我的计算机上没有任何东西可以处理该链接请求。
        • 是的。 mailto 链接非常老式,如果用户不使用自己的计算机或不使用本地电子邮件客户端,则该链接将不起作用。我敢肯定它会失败还有很多其他原因。如果可能的话,服务器端电子邮件发送是最好的方法。 mailto 绝对是最后的手段。
        • 我正在尝试使用表单。如果你知道,你能告诉我吗?
        【解决方案4】:

        除了可能的 AJAX,我不知道其他方式。

        编辑:澄清 - AJAX 会调用另一个函数,如 PHP 来实际发送邮件。您需要在服务器端实现它。

        EDIT2:Here's an article

        【讨论】:

          【解决方案5】:

          这是不可能的 :) 但是,您可以使用由 python(django)、php、asp.net 等编写的 jQuery 和后端应用程序。

          简单的 jQuery 脚本:

          $('#button').click(function(){
              $.post('backend.php',
                  {message:$('#message').val(),
                   name: $('#name').val(),
                   email:$('#email').val()},
                   function(data) {
                       $('.result').html(data);
                   });
          });
          

          和 PHP 脚本:

          <?php
          if($_POST['message']) 
          {
              $body = "Name: ".$_POST['name'];
              $body .= "<br>Email: ".$_POST['email'];
              $body .= "<br>Message: ".$_POST['message']
              if(mail("yourmail@mail.com","Subjects",$body))
                  echo 'true';
              else echo 'false;';
          }
          ?>
          

          它很简单,没有安全修复。

          【讨论】:

          • 我正在尝试使用表单。如果你知道,你能告诉我吗?
          • 你有 jQuery Form 插件吗?我可以帮你,请给我发电子邮件:chernysh.vadim@gmail.com
          【解决方案6】:

          您无法使用 客户端 javascript 发送邮件。将表单提交到 PHP/JSP/ASP 等服务器端脚本,然后从该脚本发送邮件。

          【讨论】:

          • -2?所以我想这应该是可能的:如果反对者能教我如何做到这一点,我将不胜感激;)
          • @David 如果我错了,请纠正我:Whitebeam 是一种类似于 php 的服务器端技术,其脚本语言类似于 javascript。您链接的页面上的示例电子邮件脚本在服务器上运行,而不是像传统客户端 javascript 那样在浏览器中运行。
          • Whitebeam 是一种服务器端技术,但脚本语言并不“像 JavaScript”,它 JavaScript。 JavaScript 是一种编程语言,不仅限于在 Web 浏览器中的客户端使用。
          • @David 同意。但我想可以安全地假设 OP 正在寻找客户端 javascript 解决方案,即使他没有明确提到它。
          【解决方案7】:

          你不能。您需要使用某种背景技术,例如 python、ruby、coldfusion、php 或 ASP 才能将其发送到您的电子邮件。

          网上有一些免费服务可以让你使用他们自己的资源来做这件事,但如果你处理的是安全信息,你最好使用自己的资源。

          这里有一个free PHP service,可以让你做类似的事情,但请记住,这种服务通常是不可靠的。

          【讨论】:

            【解决方案8】:

            你不能用纯 javascript 做到这一点,你可能也想使用 ajax 但在幕后应该有一个 server-side language 来发送电子邮件。

            【讨论】:

              【解决方案9】:

              您可以尝试这样做的一种方法是拥有一个

              <form action="mailto:example@example.com">
              

              提交时会尝试将表单通过电子邮件发送到给定的电子邮件地址,这是一个非常讨厌的解决方案,因为它依赖于具有正确配置的邮件客户端的客户端。此外,您无法控制电子邮件的呈现方式。 请参阅Beware of Form Mailto Action 了解其中的一些陷阱。

              【讨论】:

                【解决方案10】:

                如果您想要的东西甚至接近为合理数量的人工作,那么在问题的限制范围内,您需要使用server side JavaScript(具体取决于您使用的 SSJS 的特定实现, see Whitebeam for an example)。

                【讨论】:

                  【解决方案11】:

                  你必须使用像 php 或 perl 这样的服务器端脚本

                  将表单内容发送到服务器端php。在 php 中使用 sendmail 函数编写。

                  您的内容将发送到该电子邮件。

                  【讨论】:

                  • -1:复制了许多早期答案,但没有添加任何内容。
                  猜你喜欢
                  • 2011-10-18
                  • 2019-01-01
                  • 1970-01-01
                  • 2017-12-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-08-18
                  • 1970-01-01
                  相关资源
                  最近更新 更多