【发布时间】:2023-03-23 05:14:01
【问题描述】:
我的网站允许用户向我的数据库中保存的给定电子邮件地址发送电子邮件。现在我的网站已经上线,我正在测试这样的东西,结果发现我的contact.php 无法正常工作。当我尝试发送电子邮件时,我总是收到消息Sorry, there was an error sending your message.。
我的 Contact.php 有以下代码
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
include 'dbcontroller.php';
if (isset($_POST['sendMessage'])) {
if(empty($_POST['firstname']) || empty($_POST['lastname']) || empty($_POST['email']) || empty($_POST['message'])) {
echo "<script type='text/javascript'>alert('Please fill all the fields.');window.location.href='contact.php'</script>";
}
else{
$sql = "SELECT * from contact";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$to = $row['email'];
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$mailfrom = $_POST['email'];
$message = $_POST['message'];
$headers = "From:" . $firstname . " " . $lastname . "\r\n" . $mailfrom;
if (mail($to, $message, $headers)) {
echo "<script type='text/javascript'>alert('Your email has been sent! Thank you for contacting us!');window.location.href='contact.php'</script>";
}
else{
echo "<script type='text/javascript'>alert('Sorry there was an error sending your message.');window.location.href='contact.php'</script>";
}
}
}
?>
这是我的联系表格,与 PHP 代码位于同一页面中。
<form method="post" action"">
<label>First Name </label>
<input type="text" class="form-control" placeholder="Firstname" name="firstname" required="required" />
<label>Last Name</label>
<input type="text" class="form-control" placeholder="Lastname" name="lastname" required="required"/>
<label>Email-address</label>
<input type="email" class="form-control" placeholder="Email" name="email" required="required" maxlength="200"/>
<label>Message </label>
<textarea name="message" class="form-control" required="required" rows="4" cols="50" maxlength="500"></textarea>
<input type="submit" name="sendMessage" value="Send Email" class="btn btn-primary pull-right"/>
</form>
【问题讨论】:
-
很难说。可能还有更多原因。您是在个人计算机上还是在服务器上进行测试?因为您可能没有安装 SMTP 服务器,因此您无法发送邮件。
-
我正在我的电脑中安装的 SMTP 服务器上进行测试。 @易卜拉欣
-
我想我在您的代码中发现了一个错误。 php 邮件函数按以下顺序接受参数:收件人、主题、消息、标题。您的代码按以下顺序发送:to、message、headers。您省略了主题。
-
您的查询是 $sql = "SELECT * from contact";这将选择所有行,这意味着您将获得一个多维数组作为来自数据库的响应。
-
哦,好的。那么发送邮件需要包含主题吗? @易卜拉欣