【问题标题】:trouble sending emails via contact form with PHPMailer使用 PHPMailer 通过联系表发送电子邮件时遇到问题
【发布时间】: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 功能。

标签: php email phpmailer


【解决方案1】:

这是您的 html 代码

<form action="yourphpcode.php" 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['submit'])) {


    $subject = "subject : " . $_POST['subject'] . "<br>";
    $message = "message :" . $_POST['message'] . "<br>";
    $name    = "name :" . $_POST['name'] . "<br>";
    $email   = "email :" . $_POST['email'] . "<br>";

    $message = "
 \n $subject \n 
 \n $message \n  
 \n $name \n 
 \n $email \n 

";
    echo $message;

    include "PHPMailer_5.2.4/class.phpmailer.php";

    $mail = new PHPMailer;
    $mail->isSMTP();
    $mail->Host = 'smtp.gmail.com';

    $mail->SMTPAuth   = true;
    $mail->Username   = 'yourgmail@gmail.com';
    $mail->Password   = 'password';
    $mail->SMTPSecure = 'tls';
    $mail->Port       = 587;
    $mail->setFrom('someaddress@example.com', 'Mailer');
    $mail->addAddress('someaddress@example.com', 'Test Name');
    $mail->addAttachment('fileaddress');
    $mail->isHTML(true);
    $mail->Subject = $subject;
    $mail->Body    = $message;
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    if (!$mail->Send()) {
        echo "Mailer Error: " . $mail->ErrorInfo;
    } else {
        echo "Message sent!";
    }
}

?>

试试这个工作正常..!!

【讨论】:

  • 谢谢你,它工作正常,但电子邮件发件人姓名没有出现在收件箱中,它显示发件人是“根用户”我尝试像这样编辑代码 $name = $ _POST['name'] ; $email = $_POST['email'] ;但是id没有用也没有发邮件
  • 我的本地主机中没有任何 root 用户。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-15
  • 2022-01-22
  • 2021-03-23
  • 2011-04-06
  • 1970-01-01
相关资源
最近更新 更多