Отправка электронной почты с локального хоста с запущенным 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

Другие вопросы по тегам