【问题标题】:How to send data from a form to a email如何将表单中的数据发送到电子邮件
【发布时间】:2021-03-28 10:14:59
【问题描述】:

我想将从表单收集的数据发送到我的电子邮件,我尝试使用“mailto”功能,但我正在寻找一种自动发送数据的方法,而无需用户打开他的电子邮件。 我用这个脚本试图做到这一点,但它没有按照我想要的方式工作,它仍然打开了邮箱“框”。我用来尝试这个的代码是这样的:

function getCookie(name){
    var cname=name + "=";
    var dc=document.cookie;
    if (dc.length > 0){
        begin=dc.indexOf(cname);
        if (begin != -1){
            begin += cname.length;
            end=dc.indexOf(";", begin);
            if (end == -1) end=dc.length;
            return unescape(dc.substring(begin, end));
        }
    }
    return null;
}
 
function setCookie(name, value){
    var now=new Date();
    var then=new Date(now.getTime() + 31536000000);
    document.cookie=name + "=" + escape(value) + "; expires=" + then.toGMTString() + "; path=/";
}
 
function getInfo(form){
    form.info.value="Browser Information: " + navigator.userAgent;
}
 
function getValue(element){
    var value=getCookie(element.name);
    if (value != null) element.value=value;
}
 
function setValue(element){
    setCookie(element.name, element.value);
}
 
function fixElement(element, message){
    alert(message);
    element.focus();
}
 
function isMailReady(form){
    var passed=false;
    if (form.fullname.value == ""){
    fixElement(form.fullname, "coloque seu nome.");
    }
    else if (form.email.value.indexOf("@") == -1 || form.email.value.indexOf(".") == -1){
        fixElement(form.email, "coloque um e-mail válido.");
    }
    else if (form.message.value == ""){
        fixElement(form.message, "coloque uma mensagem.");
    }
    else{
        getInfo(form);
        passed=true;
    }
    return passed;
}

【问题讨论】:

  • 你应该先自己尝试一下。你都尝试了些什么?你可以为此做一些自己的研究。
  • 我做到了,我使用了一个我在这里得到的脚本,但它做同样的事情,当你点击提交时,它会打开邮件“框”
  • 将表单数据发送到您的服务器并让服务器发送邮件。 Stack Overflow 有很多关于这个的问题。
  • 您应该使用 PHP 发送邮件。或者,如果您的托管服务商有邮寄服务,请使用它。
  • JavaScript 不能自己发送邮件。通过mailto: 使用用户的邮件程序,或者发送到执行此操作的服务器脚本。

标签: javascript php html email mailto


【解决方案1】:

更新您的代码以使用 HTML 和 PHP 而不是 JavaScript,并将您的表单页面重命名为 form.php。此后,在form.php 文件中尝试这样的操作:

<?php

if($_POST["submit"]) {
    $recipient="your@email.address";
    $subject="Form to email message";
    $sender=$_POST["sender"];
    $senderEmail=$_POST["senderEmail"];
    $message=$_POST["message"];

    $mailBody="Name: $sender\nEmail: $senderEmail\n\n$message";

    mail($recipient, $subject, $mailBody, "From: $sender <$senderEmail>");

    $thankYou="<p>Thank you! Your message has been sent.</p>";
}

?><!DOCTYPE html>

<html>
<head>
    <meta charset="utf-8">
    <title>Contact form to email</title>
</head>

<body>

    <?=$thankYou ?>

    <form method="post" action="form.php">
        <label>Name:</label>
        <input name="sender">

        <label>Email address:</label>
        <input name="senderEmail">

        <label>Message:</label>
        <textarea rows="5" cols="20" name="message"></textarea>

        <input type="submit" name="submit">
    </form>

</body>

</html>

mailto: 链接表示预期收件人的电子邮件地址,点击后,将使用访问者的默认邮件客户端打开一封新的外发电子邮件。

在上面,我们在邮件中添加了发件人姓名和发件人电子邮件地址,还包含一条确认消息,通知发件人他们的邮件已成功发送。

此外,我们通过查找名为“提交”的表单字段来检查表单是否已发送。如果有,我们:

  1. 设置相关变量:

    一个。您的电子邮件地址

    b.邮件主题

    c。发件人姓名(取自表格)

    d。发件人的电子邮件地址(取自表格)

    e。消息(取自表格)

  2. 使用上述所有变量发送电子邮件

  3. 为确认消息设置变量

  4. 加载 HTML,包括确认消息

如果页面加载后没有发送表单数据,则不会编写任何电子邮件,也不会显示确认消息。

务必将“your@email.address”的值更新为预期的目标电子邮件。

在此Form to Email 帖子中查看有关上述代码的更多信息。

【讨论】:

  • 非常感谢你,这真的帮助了我!!谢谢你是一个这么好的人
猜你喜欢
  • 2018-06-05
  • 1970-01-01
  • 2012-07-02
  • 2013-10-05
  • 1970-01-01
  • 2022-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多