Отправить электронную почту на localhost с PHP

Я хочу отправить электронное письмо на localhost, но не знаю, как это сделать.

Я пробовал разные способы, но это не сработало.

Я использовал 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.';
  }
}
?>
Как не работает? Вы получаете сообщение об ошибке? Если так, то, что это? Если нет, то чего вы ожидаете? А что происходит?
John Conde 03.07.2018 19:13

Вы читали Пример Gmail в документации PHPMailer?

Richard 03.07.2018 19:13

@JohnConde Я не получаю сообщения об ошибке. Функция с эхом даже не будет выполняться .. Я только хочу, чтобы получателю было отправлено письмо со всей информацией из полей ввода после нажатия кнопки отправки.

P. Schmidt 03.07.2018 19:19

@ P.Schmidt Если ни то, ни другое «Сообщение не может быть отправлено». ни "Сообщение было отправлено". возвращается, то вы терпите неудачу, прежде чем дойдете до этого. Проверьте журнал ошибок php.

Logan Bertram 03.07.2018 19:29
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
4
66
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Закомментируйте следующие две строки:

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

И добавьте следующее под строкой с $mail = new PHPMailer();

 $mail->isSMTP();

И это будет работать, я пробовал на своем ноутбуке на XAMPP.

Вы забыли настроить почтовую программу php для использования SMTP

Rohit Goyal 03.07.2018 19:44

Хм, у меня не сработало .. Попробую позже.

P. Schmidt 03.07.2018 22:14
Ответ принят как подходящий

Хорошо, я наконец нашел решение. Я обновил свой код до этого

<?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 -> «Вход и безопасность» -> «Приложения с доступом к аккаунту» и включить «Разрешить менее безопасные приложения». Теперь все в порядке. Спасибо за помощь, ребята

Другие вопросы по теме