如何从 HTML 表单发送电子邮件

新手上路,请多包涵

我知道有很多使用 mailto: post 操作仅使用 html 表单发送电子邮件的示例。

但是使用它实际上会弹出发送电子邮件对话框,例如 outlook 对话框。它实际上使用我们自己的 smtp 服务器来发送电子邮件。

有什么方法可以创建仅在提交后发送电子邮件的 html 表单吗?

有没有可以实现这种效果的javascript api?比如说 node.js?

谁能提供一些代码示例?

原文由 dfdfd 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 790
1 个回答

正如其他人所说,你不能。您可以在网上找到 HTML-php 表单的好例子,这里有一个非常有用的链接,它结合了 HTML 和用于验证的 javascript 以及用于发送电子邮件的 php。

请查看来源中的完整文章(包括 zip 示例):http: //www.html-form-guide.com/contact-form/php-email-contact-form.html

HTML:

     <form method="post" name="contact_form"
    action="contact-form-handler.php">
        Your Name:
        <input type="text" name="name">
        Email Address:
        <input type="text" name="email">
        Message:
        <textarea name="message"></textarea>
        <input type="submit" value="Submit">
    </form>

记者:

     <script language="JavaScript">
    var frmvalidator  = new Validator("contactform");
    frmvalidator.addValidation("name","req","Please provide your name");
    frmvalidator.addValidation("email","req","Please provide your email");
    frmvalidator.addValidation("email","email",
      "Please enter a valid email address");
    </script>

PHP:

     <?php
    $errors = '';
    $myemail = 'yourname@website.com';//<-----Put Your email address here.
    if(empty($_POST['name'])  ||
       empty($_POST['email']) ||
       empty($_POST['message']))
    {
        $errors .= "\n Error: all fields are required";
    }
    $name = $_POST['name'];
    $email_address = $_POST['email'];
    $message = $_POST['message'];
    if (!preg_match(
    "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i",
    $email_address))
    {
        $errors .= "\n Error: Invalid email address";
    }

    if( empty($errors))
    {
    $to = $myemail;
    $email_subject = "Contact form submission: $name";
    $email_body = "You have received a new message. ".
    " Here are the details:\n Name: $name \n ".
    "Email: $email_address\n Message \n $message";
    $headers = "From: $myemail\n";
    $headers .= "Reply-To: $email_address";
    mail($to,$email_subject,$email_body,$headers);
    //redirect to the 'thank you' page
    header('Location: contact-form-thank-you.html');
    }
    ?>

原文由 Yisela 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏