Я пытаюсь отправить письмо с localhost на мой почтовый ящик yahoo с помощью функции php mail(), в ответ появляется сообщение, что я успешно отправил письмо, но я не получил никакого письма. Я читал и пробовал много так называемых «простых способов» отправки электронной почты, но результат разочаровывает, ни один из них не работает для меня. Ниже приведены код, конфигурация и сообщение об ошибке. Может ли кто-нибудь просветить меня в этом вопросе? Спасибо.
PHP код:
<?php
$to = 'myemail@yahoo.com';
$subject = 'Fake sendmail test';
$message = 'Если мы можем прочитать это, значит, наша поддельная установка Sendmail работает!';
$headers = 'From: myemail@egmail.com' . "\r\n" .
'Reply-To: myemail@gmail.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(mail($to, $subject, $message, $headers)) {
echo 'Почта отправлена успешно!';
} else {
die('Ошибка: Не удалось отправить почту!');
}
?>
Конфигурация для sendmail.ini
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_ssl = tls
error_logfile = error.log
debug_logfile = debug.log
auth_username = myemail@gmail.com
auth_password = mypassword
force_sender = myemail@gmail.comКонфигурация для php.ini (я использую почтовый сервер gmail)
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = myemail@gmail.com
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"Сообщение об ошибке в журнале ошибок sendmail с портом 587
20/10/02 13:36:41 : Must issue a STARTTLS command first. k4sm129639pbd.11 - gsmtp
Ответ 1
Установите «поддельный sendmail для windows». Если вы не используете XAMPP, вы можете скачать его здесь: http://glob.com.au/sendmail/sendmail.zip
[Изменить] файл php.ini для его использования (закомментировал другие строки):
[mail function]
; For Win32 only.
; SMTP = smtp.gmail.com
; smtp_port = 25
; For Win32 only.
; sendmail_from = <e-mail username>@gmail.com
; Только для Unix. Вы также можете указать аргументы (по умолчанию: "sendmail -t -i").
sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
Не обращайте внимания на «только для Unix», так как мы на самом деле используем sendmail.
Затем необходимо настроить файл «sendmail.ini» в каталоге, где был установлен sendmail:
[sendmail]
smtp_server = smtp.gmail.com
smtp_port = 25
error_logfile = error.log
debug_logfile = debug.log
auth_username = <username>
auth_password = <password>
force_sender = <e-mail username>@gmail.com
Чтобы получить доступ к учетной записи Gmail, защищенной двухфакторной аутентификацией, необходимо создать пароль для конкретного приложения.
Ответ 2
В файле php.ini отключите вот это:
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
А также в файле sendmail.ini:
smtp_server = smtp.gmail.com
smtp_port = 465
error_logfile = error.log
debug_logfile = debug.log
auth_username = your@gmail.com
auth_password = yourpassword
force_sender = your@gmail.com
hostname = localhost
Ответ 3
Самый простой способ — использовать PHPMailer и Gmail SMTP. Конфигурация будет выглядеть следующим образом:
require 'PHPMailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'Email Address';
$mail->Password = 'Email Account Password';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
Ответ 4
Не забудьте сгенерировать второй пароль для учетной записи Gmail. Этот новый пароль вы будете использовать в своем коде. Прочтите здесь:
https://support.google.com/accounts/answer/185833
В разделе «Как сгенерировать пароль приложения» нажмите на «Пароли приложений», затем в разделе «Выберите приложение» выберите «Почта», выберите свое устройство и нажмите «Сгенерировать». Ваш второй пароль будет напечатан на экране.
Ответ 5
Необходимо аутентифицировать имя пользователя и пароль почты, после чего только один раз можно успешно отправить почту с localhost:
[sendmail]
smtp_server = smtp.gmail.com
smtp_port = 25
error_logfile = error.log
debug_logfile = debug.log
auth_username = myemail@gmail.com
auth_password = gmailpassword
force_sender = myemail@gmail.com
Web