php - 如何使用 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”>
<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>
解决方案
默认情况下,服务器无法发送电子邮件。您必须为其设置一个邮件服务器。而且根据我的经验,大多数时候我们必须使用 SMTP 服务器来发送电子邮件。
您可以在此处查看通过 PHP 中的 SMTP 发送电子邮件的方式:
您还必须通过以下方式设置您的电子邮件allow less secure apps
:
https://kb.synology.com/en-global/SRM/tutorial/How_to_use_Gmail_SMTP_server_to_send_emails_for_SRM
推荐阅读
- azure-devops - AzDO YAML 管道发布 Html 测试结果
- sql - 数据类型为 CHAR(23 BYTE) 的 2 个日期之间的 Oracle 差异
- automation - 如何使用 ROBOT FRAMEWORK 将文本输入到 htaccess 身份验证弹出窗口(URL 访问身份验证弹出窗口)用户名和密码字段
- javascript - 使用 async 和 await 返回解析错误
- java - 在java swing中的标签上导出图像
- autohotkey - 为什么当我运行应用程序时它只是跳过一些 ifs
- constraints - GEKKO - 矩阵形式的优化
- flutter - Flutter java.lang.NullPointerException 上集成一些插件
- bash - bash 中“;”和“&&”的区别
- url - 加密字符串 URL 安全吗?