【问题标题】:send email on localhost with PHP使用 PHP 在 localhost 上发送电子邮件
【发布时间】:2018-12-12 01:52:46
【问题描述】:

我想在本地主机上发送一封电子邮件,但我真的不知道该怎么做。

我尝试了一些不同的方法,但它不起作用。

我使用 PHPMailer https://github.com/PHPMailer/PHPMailer/tree/5.2-stable 作为邮件服务器,但我认为这可能是错误的实现。

不知道这是否重要,但我使用 MAMP。

这是我目前拥有的:

<?php
if (isset($_POST['submit'])) {
  require("PHPMailer/PHPMailerAutoload.php");
  ini_set("SMTP","ssl://smtp.gmail.com");
  ini_set("smtp_port","465");
  $mail = new PHPMailer();
  $mail->SMTPAuth = true;
  $mail->Host = "smtp.gmail.com";
  $mail->SMTPSecure = "ssl";
  $mail->SMTPAuth = true;
  $mail->Username = "mail account";
  $mail->Password = "password for account";
  $mail->Port = "465";

  $mail->setFrom('receiver mail', 'TEST');
  $mail->addReplyTo('receiver mail', 'TEST');
  $mail->addAddress('recipient mail');
  $mail->Port = "465";

  $mail->isHTML(true);
  $mail->Subject = "test";

  // get text from input fields
  $email = $_POST['email'];
  $name = $_POST['name'];
  $address = $_POST['address'];
  $city = $_POST['city'];
  $number = $_POST['number'];
  $textarea = $_POST['textarea'];

  $bodyContent =
    "<p>Name: " . $name . "</p>
    <p>E-Mail: " . $email . "</p>
    <p>Telefonnummer: " . $number . "</p>
    <p>Adresse: " . $address . $city . "</p>
    <p>Anliegen: " . $textarea . "</p>";

  $mail->Body = $bodyContent;

  if (!$mail->send()) {
    echo 'Message could not be sent.';
    echo 'Mailer Error' . $mail->ErrorInfo;
  } else {
    echo 'Message has been sent.';
  }
}
?>

【问题讨论】:

  • 怎么不起作用?你有错误吗?如果是这样,它是什么?如果没有,你期望会发生什么?会发生什么?
  • 您是否阅读了 PHPMailer 文档中的 Gmail example
  • @JohnConde 我没有收到错误消息。带有回声的功能甚至不会被执行。我只希望在单击提交按钮后将一封邮件发送给收件人,其中包含输入字段中的所有信息。
  • @P.Schmidt 如果两者都没有“无法发送消息。”也不是“消息已发送”。被退回,那么你在到达那一步之前就失败了。检查你的 php 错误日志。

标签: php html email localhost mamp


【解决方案1】:

注释掉以下两行:

// ini_set("SMTP","ssl://smtp.gmail.com");
// ini_set("smtp_port","465");

并在$mail = new PHPMailer();行下添加以下内容

 $mail->isSMTP();

它会起作用,我已经在 XAMPP 上的笔记本电脑上尝试过。

【讨论】:

  • 您忘记设置 php mailer 使用 SMTP
  • 嗯,对我没用。我稍后再试。
【解决方案2】:

好的,我终于找到了解决方案。我将代码更新为此

<?php
if (isset($_POST['sendButton'])) {
  require("PHPMailer/PHPMailerAutoload.php");
  require 'PHPMailer/class.phpmailer.php';

  $mail = new PHPMailer();
  $mail->isSMTP();
  $mail->SMTPAuth = true;
  $mail->Host = "smtp.gmail.com";
  $mail->SMTPSecure = "tls";
  $mail->SMTPAuth = true;
  $mail->Username = "secret";
  $mail->Password = "secret";

  $subject = utf8_decode('test');
  $mail->setFrom('secret', $subject);
  $mail->addReplyTo('secret', $subject);
  $mail->addAddress('secret');
  $mail->Subject = utf8_decode('test');
  $mail->Port = "587";
  $mail->isHTML(true);
  $email = $_POST['email'];
  $name = $_POST['name'];
  $address = $_POST['address'];
  $city = $_POST['city'];
  $number = $_POST['number'];
  $sendText = $_POST['sendText'];

  $bodyContent =
    "<p>Name: " . $name . "</p>
    <p>E-Mail: " . $email . "</p>
    <p>Telefonnummer: " . $number . "</p>
    <p>Adresse: " . $address . ' ' . $city . "</p>
    <p>Anliegen: " . $sendText . "</p>";

  $mail->Body = $bodyContent;
}
?>

除了我必须去 myaccount.google.com ->“登录和安全”->“具有帐户访问权限的应用程序”,然后将“允许不太安全的应用程序”设置为“开启” 现在一切都很好。 谢谢大家的帮助

【讨论】:

    猜你喜欢
    • 2017-06-19
    • 1970-01-01
    • 2012-05-07
    • 2012-07-03
    • 1970-01-01
    • 2016-03-02
    • 2014-05-20
    • 2016-09-20
    • 1970-01-01
    相关资源
    最近更新 更多