【发布时间】:2016-08-19 13:48:21
【问题描述】:
我在使用 PHPMailer 类发送电子邮件时遇到问题,在我提交表单后,显示此消息:“已发送消息”但我没有收到任何电子邮件,我什至检查了垃圾邮件文件夹及其空。
这里是html表单代码:
<form action="<?php echo $PHP_SELF; ?>" method="post">
<input type="text" class="form-control" placeholder="Name" name="name">
<input type="email" class="form-control" placeholder="Email" name="email">
<input type="text" class="form-control" placeholder="Subject" name="subject">
<textarea class="form-control" placeholder="Message" rows="7" name="message"> </textarea>
<input type="submit" class="form-control" name="submit" value="submit">
</form>
而php代码是:
<?php
if(isset($_POST['email'])) {
if(isset($_POST['subject'])){ $subject = $_POST['subject']; }
if(isset($_POST['message'])){ $message = $_POST['message']; }
if(isset($_POST['name'])){ $name = $_POST['name']; }
if(isset($_POST['email'])){ $email = $_POST['email']; }
require_once('class.phpmailer.php');
$mail = new PHPMailer();
$body = $message;
$mail->SetFrom($email, $name);
$address = "example@domain.net";
$mail->AddAddress($address, "example@domain.net");
$mail->Subject = $subject;
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
}
?>
【问题讨论】:
-
我建议您检查您的 SMTP 配置。您是否为电子邮件服务器设置了有效的 SMTP 设置?从您的代码中,您没有使用任何 SMTP 服务器来发送电子邮件。因此,即使您的代码正确并返回成功,电子邮件也不会发送。
-
当未配置(无 SMTP 中继)时,PHPMailer 使用与
mail()函数相同的传输。因此适用相同的条件。启用调试,检查日志,DKIM/SPF 等等等等等等。 -
感谢您的回答和建议,我已经编辑了 php 代码并添加了禁用 smtp auth 的 smtp 配置,因为域不需要身份验证但问题仍然相同......
-
您确定要发送到有效地址吗?邮件无法投递可能有各种原因——垃圾邮件过滤器、沿途的网络错误等等。仅仅因为代码认为它已经发送了一封电子邮件并不能保证电子邮件会到达其目的地。
-
您应该使用更新的 PHPMailer 版本,使用
Autoload功能。