【问题标题】:Send email fails using phpmailer [duplicate]使用phpmailer发送电子邮件失败[重复]
【发布时间】:2019-06-22 09:54:49
【问题描述】:

我无法使用PHPMailer 在 PHP 中发送电子邮件,并且不知道我的代码的哪一部分是错误的。我的代码如下:

<?php
$msg = "";

if (isset($_POST['submit'])) {
  require 'vendor/autoload.php';

  function sendemail($to, $from, $fromName, $body) {
    $mail = new PHPMailer\PHPMailer\PHPMailer();
    $mail->setFrom($from, $fromName);
    $mail->addAddress($to);
    $mail->Subject = 'Feedback';
    $mail->Body = $body;
    $mail->isHTML(false);

    return $mail->send();
  }

  $name = $_POST['name'];
  $email = $_POST['email'];
  $body = $_POST['body'];

  if (sendemail('draysondw@gmail.com', $email, $name, $body)) {
    $msg = 'Email sent!';
  }
  else {
    $msg = 'Email Failed!';
  }
}  ?>
<html>
<head>
  <meta charset="utf-8">
  <title>Feedback Form</title>
</head>
<body>
  <form method="post" action="index.php">
    Name: <input type="text" name="name" required><br>
    Email: <input type="text" name="email" required><br>
    Message: <textarea name="body"></textarea><br>
    <input type="submit" name="submit" value="Send Feedback">
  </form>
  <br>
  <?php echo $msg; ?>
</body>
</html>

您能帮我弄清楚我在修复电子邮件发送方面做错了什么吗?

【问题讨论】:

    标签: php email phpmailer


    【解决方案1】:

    不要这样做:

    $mail->setFrom($from, $fromName);
    

    这是伪造的,将导致发送失败、拒绝或垃圾邮件过滤您的邮件。改为这样做:

    $mail->setFrom($to);
    $mail->addReplyTo($from, $fromName);
    

    这样您就不会伪造发件人地址,但回复仍会发送给提交者。

    我还建议阅读the troubleshooting guide,它专门处理这个问题和许多其他问题。

    【讨论】:

    • 还是不行=(
    • 您还没有说出“不起作用”的确切含义。鉴于您通过mail() 发送邮件,您需要按照指南的建议检查您的邮件服务器日志。
    猜你喜欢
    • 2019-04-16
    • 2014-07-04
    • 2021-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-16
    • 2018-01-17
    相关资源
    最近更新 更多