首页 > 解决方案 > 如何使用 PHP 脚本从填写好的表单中获取电子邮件?

问题描述

我正在尝试创建一个 php 脚本来将填写好的表格从网站发送到特定的电子邮件。我尝试了几种方法,但我的网络邮件中没有收到电子邮件。我也没有收到任何错误,所以我不确定问题出在哪里。这些文件位于同一目录中,并且网络邮件似乎运行良好。我将不胜感激您的意见。

这是 email.php 文件:

<?php
$error = ""; $successMessage = "";
        
if ($_POST) {
    if (!$_POST["name"]) {
        $error .= "A name is required.<br>";
    }
    if (!$_POST["email"]) {
        $error .= "An email address is required.<br>";
    }
                
    if (!$_POST["choice"]) {
        $error .= "Select a trial session.<br>";
    }
    if (!$_POST["date"]) {
        $error .= "Select a date.<br>";
    }
                
    if ($_POST['email'] && filter_var($_POST["email"], FILTER_VALIDATE_EMAIL) === false) {                
        $error .= "The email address is invalid.<br>";
    }
                
    if ($error != "") {
                    
        $error = '<div class="alert alert-danger" role="alert"><p>There were error(s) in your form:</p>' . $error . '</div>';
                    
    } else {
                    
        $emailTo = "my@addressemail.com";
        $subject = "trial session";
        $name = $_POST['name'];
        $choice = $_POST['choice'];
        $date = $_POST['date'];
        $headers = "From: ".$_POST['email'];
    
        if (mail($emailTo, $subject, $name, $choice, $date, $headers)) {
            $successMessage = '<div class="alert alert-success" role="alert">Your message was sent, we\'ll get back to you ASAP!</div>';
        } else {
            $error = '<div class="alert alert-danger" role="alert"><p><strong>Your message couldn\'t be sent - please try again later</div>';
        }
    }
}
?>


<div class="container">
    <h1>Get in touch!</h1>
          
    <div id="error"><? echo $error.$successMessage; ?></div>
          
        <form method="post" action=”email.php”&gt;
            <fieldset class="form-group">
                <label for="name">Name</label>
                <input type="text" class="form-control" id="name" name="name" >
            </fieldset>
            <fieldset class="form-group">
                <label for="email">Email address</label>
                <input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
                <small class="text-muted">We'll never share your email with anyone else.</small>
            </fieldset>
            <div class="mb-3">
                <div class="control-label" id="choice" name="choice">Which trial session you would like to book?</div>
                    <select class="form-select" required aria-label="select example" id="choice" name="choice">
                        <option value="">I'm interested in...</option>
                        <option value="1">option1</option>
                        <option value="2">option2</option>
                    </select>
                </div>
                <div class="form-group"> <!-- Date input -->
                    <label class="control-label" for="date">Date</label>
                    <input class="form-control" id="date" name="date" placeholder="MM/DD/YYY" type="text"/>
                </div>
                <button type="submit" id="submit" class="btn btn-primary">Submit</button>
            </form>
        </div>


标签: phpemail

解决方案


默认情况下,服务器无法发送电子邮件。您必须为其设置一个邮件服务器。而且根据我的经验,大多数时候我们必须使用 SMTP 服务器来发送电子邮件。

您可以在此处查看通过 PHP 中的 SMTP 发送电子邮件的方式:

从 SMTP 服务器使用 PHP 发送电子邮件

您还必须通过以下方式设置您的电子邮件allow less secure apps

https://kb.synology.com/en-global/SRM/tutorial/How_to_use_Gmail_SMTP_server_to_send_emails_for_SRM


推荐阅读