Я использую Windows 7, Панель управления XAMPP v3.2.1
Предполагается отправить электронное письмо с localhost на gmail.
Я пытался использовать Php Mailer и Stunnel;
некомментированное расширение = php_openssl.dll.
Но это все еще не работает
Конфигурация php.ini и sendmail.ini
[php.ini — функция почты]SMTP = smtp.gmail.com
smtp_port = 587
;sendmail_from =
sendmail_path ="\"C:\xampp\sendmail\sendmail.exe\" -t";sendmail_path="C:\xampp\mailtodisk\mailtodisk.exe"
[sendmail.ini]
smtp_server=smtp.gmail.com
smtp_port=587
smtp_ssl=auto
;default_domain=
error_logfile=error.log
debug_logfile=debug.log
auth_username=********@gmail.com
auth_password=********
;pop3_server=
;pop3_username=
;pop3_password=
force_sender=*******@gmail.com
force_recipient=
hostname=
Вот мой тестирующий PHP-код, который пытается выяснить причины
$fp = stream_socket_client("smtp.gmail.com:587", $errno, $errstr, 30);
if (!$fp) {
echo "$errstr ($errno)<br />\n";
} else {
while (!feof($fp)) {
echo fgets($fp, 1024);
}
fclose($fp);
}
Я получил это:
Предупреждение: stream_socket_client (): в C: \ xampp \ htdocs \ xxxxxx \ xxxx.php в строке 2
Получите ошибку (тайм-аут соединения.) (10060)
Я пытался использовать Php Mailer для тестирования.
require("phpmailer/PHPMailerAutoload.php");
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = "********@gmail.com"; // Enter your SMTP username
$mail->Password = "********"; // SMTP password
$webmaster_email = "******@gmail.com"; //Add reply-to email address
$email="**********@gmail.com"; // Add recipients email address
$name="*********"; // Add Your Recipient’s name
$mail->From = $webmaster_email;
$mail->FromName = "Webmaster";
$mail->AddAddress($email,$name);
$mail->AddReplyTo($webmaster_email,"Webmaster");
$mail->WordWrap = 50; // set word wrap
$mail->IsHTML(true); // send as HTML
$mail->Subject = "This is your subject";
$mail->Body = "Hi, this is your email body, etc, etc"; //HTML Body
$mail->AltBody = "Hi, this is your email body, etc, etc"; //Plain Text Body
if(!$mail->Send()){
echo "Mailer Error:". $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
Возвращается
Ошибка почтовой программы: сбой подключения SMTP ().
Я пытался запустить sendmail.exe от имени администратора
и сделать его выполненным как Windows XP SP 3.
Но это все еще не работает
Оценили, если кто-нибудь может мне помочь
Ты это,
Загрузить расширение OpenSSL включено (вы можете включить его, отредактировав php.ini).
Найти строку ;extension=php_openssl.dll
и раскомментируйте его, удалив точку с запятой (;
) с начала строки.
Перезапустите Apache (из панели управления XAMPP)
РЕДАКТИРОВАТЬ
Я настраиваю:
Операционные системы: Windows 7
XAMPP: xampp-win32-5.6.3-0-VC11
PHPMailer: https://github.com/PHPMailer/PHPMailer
Структура папок:
mail.php:
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer(); // create a new object
$mail->IsSMTP(); // enable SMTP
$mail->SMTPDebug = 1; // debugging: 1 = errors and messages, 2 = messages only
$mail->SMTPAuth = true; // authentication enabled
$mail->SMTPSecure = 'ssl'; // secure transfer enabled REQUIRED for GMail
$mail->Host = "smtp.gmail.com";
$mail->Port = 465; // or 587
$mail->IsHTML(true);
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->SetFrom("[email protected]");
$mail->Subject = "Test";
$mail->Body = "hello";
$mail->AddAddress("[email protected]");
if (!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message has been sent";
}
Как видите, я установил $mail->SMTPDebug = 1;
Это будет отображаться шаг за шагом (режим отладки), так что вы можете увидеть, если у вас есть ошибка.
Возможны ошибки, неверный пароль или, если у вас есть двухэтапная проверка Google, она тоже не будет выполнена. Есть много других ошибок. Будет отображаться ошибка
Результат
Необязательный: Я на всякий случай выключил брандмауэр Windows, но вам это не нужно.
Если у вас все еще есть проблема, дайте мне знать. Я буду более чем рад помочь вам
Других решений пока нет …