Я пытаюсь отправить электронное письмо с localhost на мою учетную запись электронной почты yahoo, используя функцию php mail (), ответ говорит, что я успешно отправил электронное письмо, но я не получил никаких сообщений по электронной почте. Я читал и пробовал много так называемого «простого способа» для отправки электронной почты, но результат разочаровывает, никто из них не работает для меня. Ниже приведены код, конфигурации и сообщение об ошибке. Может кто-нибудь просветить меня этим? Благодарю.
PHP-код
<?php $to = 'myemail@yahoo.com'; $subject = 'Fake sendmail test'; $message = 'If we can read this, it means that our fake Sendmail setup works!'; $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 'Email sent successfully!'; } else { die('Failure: Email was not sent!'); } ?>
Конфигурация для php.ini (я использую почтовый сервер gmail)
SMTP = smtp.gmail.com
smtp_port = 587
sendmail_from = myemail@gmail.com
sendmail_path = "\" C: \ xampp \ sendmail \ sendmail.exe \ "-t"
Конфигурация для 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 = мойпароль
force_sender=myemail@gmail.com
сообщение об ошибке в журнале ошибок sendmail с портом 587
13/10/02 13:36:41: Сначала нужно выпустить команду STARTTLS. k4sm129639pbd.11 – gsmtp
Вот ссылка, которая дает мне ответ:
[Установить] « поддельный sendmail для окон ». Если вы не используете XAMPP, вы можете скачать его здесь: http://glob.com.au/sendmail/sendmail.zip
[Modify] the php.ini file to use it (commented out the other lines): [mail function] ; For Win32 only. ; SMTP = smtp.gmail.com ; smtp_port = 25 ; For Win32 only. ; sendmail_from = <e-mail username>@gmail.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). sendmail_path = "C:\xampp\sendmail\sendmail.exe -t"
(игнорируйте бит «Unix only», поскольку мы фактически используем 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, защищенной двухфакторной проверкой, вам нужно будет создать пароль для конкретного приложения . ( источник )
в файле 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
настройте это … он будет работать … он отлично работает для меня.
Благодарю.
require_once "Mail.php"; $from = '<from.gmail.com>'; $to = '<to.yahoo.com>'; $subject = 'Hi!'; $body = "Hi,\n\nHow are you?"; $headers = array( 'From' => $from, 'To' => $to, 'Subject' => $subject ); $smtp = Mail::factory('smtp', array( 'host' => 'ssl://smtp.gmail.com', 'port' => '465', 'auth' => true, 'username' => 'johndoe@gmail.com', 'password' => 'passwordxxx' )); $mail = $smtp->send($to, $headers, $body); if (PEAR::isError($mail)) { echo('<p>' . $mail->getMessage() . '</p>'); } else { echo('<p>Message successfully sent!</p>'); }
[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
необходимо аутентифицировать имя пользователя и пароль почты, а затем только один раз может успешно отправлять почту с localhost
Не забудьте создать второй пароль для своей учетной записи Gmail. Вы будете использовать этот новый пароль в своем коде. Прочитай это:
https://support.google.com/accounts/answer/185833
В разделе «Как создать пароль для приложения» нажмите «Пароль приложения», затем в разделе «Выбрать приложение» выберите «Почта», выберите свое устройство и нажмите «Создать». Второй пароль будет напечатан на экране.
Самый простой способ – использовать SMTP PHPMailer и Gmail. Конфигурация будет выглядеть следующим образом.
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;
Пример скрипта и полный исходный код можно найти здесь – Как отправить электронную почту с Localhost в PHP
Проверьте свой спам. mail () иногда отправляет почту спаму.
ПОПРОБУЙ ЭТО. ЭТО РАБОТАЕТ ДЛЯ МЕНЯ ВСЕГДА.
$config['protocol'] = 'smtp'; $config['smtp_host'] = 'ssl://smtp.gmail.com'; $config['smtp_port'] = '465'; //ssl $config['smtp_timeout'] = '7'; $config['smtp_user'] = 'tandelromal09@gmail.com'; $config['smtp_pass'] = 'pentium409'; $config['charset'] = 'utf-8'; $config['newline'] = "\r\n"; $config['mailtype'] = 'html'; $config['validation'] = TRUE;