Я хочу отправить электронное письмо на 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.';
}
}
?>
Вы читали Пример Gmail в документации PHPMailer?
@JohnConde Я не получаю сообщения об ошибке. Функция с эхом даже не будет выполняться .. Я только хочу, чтобы получателю было отправлено письмо со всей информацией из полей ввода после нажатия кнопки отправки.
@ P.Schmidt Если ни то, ни другое «Сообщение не может быть отправлено». ни "Сообщение было отправлено". возвращается, то вы терпите неудачу, прежде чем дойдете до этого. Проверьте журнал ошибок php.






Закомментируйте следующие две строки:
// ini_set("SMTP","ssl://smtp.gmail.com");
// ini_set("smtp_port","465");
И добавьте следующее под строкой с $mail = new PHPMailer();
$mail->isSMTP();
И это будет работать, я пробовал на своем ноутбуке на XAMPP.
Вы забыли настроить почтовую программу php для использования SMTP
Хм, у меня не сработало .. Попробую позже.
Хорошо, я наконец нашел решение. Я обновил свой код до этого
<?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 -> «Вход и безопасность» -> «Приложения с доступом к аккаунту» и включить «Разрешить менее безопасные приложения». Теперь все в порядке. Спасибо за помощь, ребята