Отправить письмо с localhost на XAMMP в PHP с помощью почтового сервера GMAIL
Я пытаюсь отправить электронное письмо с localhost на мою учетную запись электронной почты yahoo, используя функцию php mail(), ответ говорит, что я успешно отправил электронное письмо, но я не получил никаких писем. Я читал и пробовал много так называемого "простого способа" для отправки электронной почты, но результат разочаровывает, никто из них не работает для меня. Ниже приведены код, конфигурации и сообщение об ошибке. Может кто-нибудь просветить меня этим? Спасибо.
php code
<?php
$to = '[email protected]';
$subject = 'Fake sendmail test';
$message = 'If we can read this, it means that our fake Sendmail setup works!';
$headers = 'From: [email protected]' . "\r\n" .
'Reply-To: [email protected]' . "\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 = [email protected]
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
[email protected]
auth_password = мойпароль
[email protected]
сообщение об ошибке в журнале ошибок sendmail с портом 587
13/10/02 13:36:41: Сначала необходимо выпустить команду STARTTLS. k4sm129639pbd.11 - gsmtp
Ответы
Ответ 1
Вот ссылка, которая дает мне ответ:
[Установить] " поддельный 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, защищенной двухфакторной проверкой, вам необходимо создать пароль для приложения. (источник)
Ответ 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
[email protected]
auth_password=yourpassword
[email protected]
hostname=localhost
настройте это... он будет работать... он отлично работает для меня.
спасибо.
Ответ 3
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' => '[email protected]',
'password' => 'passwordxxx'
));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail)) {
echo('<p>' . $mail->getMessage() . '</p>');
} else {
echo('<p>Message successfully sent!</p>');
}
Ответ 4
[sendmail]
smtp_server=smtp.gmail.com
smtp_port=25
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=gmailpassword
[email protected]
нужно аутентифицировать имя пользователя и пароль почты, и только один раз можно успешно отправить почту с localhost
Ответ 5
Не забудьте создать второй пароль для своей учетной записи Gmail.
Вы будете использовать этот новый пароль в своем коде. Прочтите это:
https://support.google.com/accounts/answer/185833
В разделе "Как создать пароль для приложения" нажмите "Пароль приложения", затем в разделе "Выбрать приложение" выберите "Почта", выберите свое устройство и нажмите "Создать". Второй пароль будет напечатан на экране.
Ответ 6
Самый простой способ - использовать 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;
Пример script и полный исходный код можно найти здесь - Как отправлять электронную почту с Localhost в PHP
Ответ 7
Проверьте свой спам. mail() иногда отправляет почту спаму.
Ответ 8
ПОПРОБУЙТЕ ЭТО. ЭТО РАБОТАЕТ НА МНЕ ВСЕГДА.
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com';
$config['smtp_port'] = '465'; //ssl
$config['smtp_timeout'] = '7';
$config['smtp_user'] = '[email protected]';
$config['smtp_pass'] = 'pentium409';
$config['charset'] = 'utf-8';
$config['newline'] = "\r\n";
$config['mailtype'] = 'html';
$config['validation'] = TRUE;
Ответ 9
сначала настройте файл php.ini, который находится в вашем xampp/php, чтобы
[почтовая функция]; XAMPP: Комментируйте это, если вы хотите работать с SMTP-сервером, таким как Mercury SMTP = smtp.gmail.com
smtp_port = 25
; Только для Win32.
; http://php.net/sendmail-from
sendmail_from = [email protected]
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
[email protected]
auth_password = yourgmailpassword
pop3_server =
pop3_username =
pop3_password =
[email protected]
force_recipient =
имя хоста = локальный
затем используйте функцию почты
как
mail ("[email protected]", "Успех", "Отправлять почту с localhost с помощью PHP");
в php save file как email.php последнее, что нужно сделать, чтобы двухэтапная аутентификация была отключена в вашей учетной записи gmail, иначе вы не получите почту и настройки gmail > ** Пересылка и POP/IMAP разрешить imap и сохранить изменения и, наконец, отключить приложение менее безопасных подключений
Пойдите, получайте удовольствие