SMTP-сервер с XAMPP?

Я новичок в php, и в моем проекте я использовал функцию php mail, но при отправке почты из базы данных она показывает ошибку, например:

Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" 

Поиск в stackoverflow и google я узнал, что XAMPP не предоставляет SMTP-сервер, и мне придется установить SMTP-сервер.

Я действительно запутался. Итак, какой сервер SMTP я должен установить?

В этом примере я буду использовать PHPMailer .

Итак, сначала вам нужно загрузить исходный код PHPMailer. Требуется только 3 файла:

  • PHPMailerAutoload.php
  • class.phpmailer.php
  • class.smtp.php

Поместите эти 3 файла в одну папку. Затем создайте основной скрипт (я назвал его index.php).

Содержание index.php:

 <?php //Load PHPMailer dependencies require_once 'PHPMailerAutoload.php'; require_once 'class.phpmailer.php'; require_once 'class.smtp.php'; /* CONFIGURATION */ $crendentials = array( 'email' => 'XXXXXXXX@gmail.com', //Your GMail adress 'password' => 'XXXXXXXX' //Your GMail password ); /* SPECIFIC TO GMAIL SMTP */ $smtp = array( 'host' => 'smtp.gmail.com', 'port' => 587, 'username' => $crendentials['email'], 'password' => $crendentials['password'], 'secure' => 'tls' //SSL or TLS ); /* TO, SUBJECT, CONTENT */ $to = ''; //The 'To' field $subject = 'This is a test email sent with PHPMailer'; $content = 'This is the HTML message body <b>in bold!</b>'; $mailer = new PHPMailer(); //SMTP Configuration $mailer->isSMTP(); $mailer->SMTPAuth = true; //We need to authenticate $mailer->Host = $smtp['host']; $mailer->Port = $smtp['port']; $mailer->Username = $smtp['username']; $mailer->Password = $smtp['password']; $mailer->SMTPSecure = $smtp['secure']; //Now, send mail : //From - To : $mailer->From = $crendentials['email']; $mailer->FromName = 'Your Name'; //Optional $mailer->addAddress($to); // Add a recipient //Subject - Body : $mailer->Subject = $subject; $mailer->Body = $content; $mailer->isHTML(true); //Mail body contains HTML tags //Check if mail is sent : if(!$mailer->send()) { echo 'Error sending mail : ' . $mailer->ErrorInfo; } else { echo 'Message sent !'; } 

Вы также можете добавить поля «CC», «BCC» и т. Д. …

Примеры и документацию можно найти в Github .

Если вам нужно использовать другой SMTP-сервер, вы можете изменить значения в $smtp .

Примечание . Возможно, возникла проблема с отправкой почты, например, «Предупреждение: stream_socket_enable_crypto (): этот поток не поддерживает SSL / crypto».

В таком случае вы должны включить расширение OpenSSL. Проверьте свой phpinfo() , найдите значение «Загруженный файл конфигурации» (в моем случае: E: \ Program Files \ wamp \ bin \ apache \ apache2.4.2 \ bin \ php.ini), и в этом файле раскомментируйте line extension=php_openssl.dll . Затем перезапустите сервер XAMPP.