Web

Отправка электронной почты с локального хоста, на котором запущен XAMPP на PHP, с помощью почтового сервера GMAIL

Я пытаюсь отправить письмо с 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

 

Схожие статьи

Как закомментировать строку в HTML: примеры комментирования кода
Web

Как закомментировать строку в HTML: примеры комментирования кода

Web

Преобразование объекта PHP в ассоциативный массив

Web

Тернарный оператор PHP против оператора объединения с нулевым значением

Как в Git узнать репозиторий: подробная инструкция
Web

Как в Git узнать репозиторий: подробная инструкция

×