Отправка электронной почты с локального хоста с запущенным XAMMP в PHP с использованием почтового сервера GMAIL
Я пытаюсь отправить электронное письмо с 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
9 ответов
Вот ссылка, которая дает мне ответ:
[Установить] " поддельный sendmail для windows". Если вы не используете 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
настроить этот.. он будет работать... он работает нормально для меня.
Благодарю.
сначала настройте файл php.ini, который находится в вашем xampp/php для
[функция почты]; XAMPP: закомментируйте это, если вы хотите работать с SMTP-сервером, таким как Mercury SMTP = smtp.gmail.com
smtp_port = 25
; Только для Win32.
; http://php.net/sendmail-from
sendmail_from = yourgmail@gmail.com
sendmail_path = "\" C: \ xampp \ sendmail \ sendmail.exe \ "-t -i"
удалить точку с запятой перед sendmail из и sendmailpath
после этого настройте файл sendmail.ini, который находится в папке sendmail, вы можете выполнить поиск в папке xampp и сделать это:
[Отправить письмо]
smtp_server = smtp.gmail.com
smtp_port = 587
smtp_ssl = авто
default_domain = локальный
error_logfile = error.log
auth_username=yourgmailusername@gmail.com
auth_password = yourgmailpassword
pop3_server =
pop3_username =
pop3_password =
force_sender=yourgmailusername@gmail.com
force_recipient =
имя хоста = локальный
затем используйте функцию почты
лайк
mail("yourgmailusername@gmail.com","Success","Отправить почту с локального хоста с помощью PHP");
в php save file как email.php последнее, что нужно сделать, чтобы убедиться, что в вашей учетной записи gmail отключена двухэтапная проверка, иначе вы не получите почту и в настройках gmail >
** Пересылка и POP/IMAP активируют imap и сохраняют изменения и, наконец, отключить приложение менее безопасных подключений
Иди, веселись
[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
необходимо аутентифицировать имя пользователя и пароль почты, тогда только один раз можно успешно отправить почту с локального хоста
ПОПРОБУЙ ЭТО. Это работает для меня всегда.
$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;
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>');
}
Проверьте свой Спам. Функция mail() иногда отправляет почту на спам.
Не забудьте сгенерировать второй пароль для своей учетной записи Gmail. Вы будете использовать этот новый пароль в своем коде. Прочитай это:
https://support.google.com/accounts/answer/185833
В разделе "Как создать пароль приложения" нажмите "Пароли приложения", затем в разделе "Выберите приложение" выберите "Почта", выберите свое устройство и нажмите "Создать". Ваш второй пароль будет напечатан на экране.
Самый простой способ - использовать 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;
Пример скрипта и полный исходный код можно найти здесь - Как отправить письмо с Localhost на PHP