Ошибка SMTP connect () в PHPMailer

Я совершенно новый для PHP, и я хочу отправить почту с помощью PHP. У меня есть форма «Свяжитесь с нами», в которой будет приниматься электронное письмо от человека, связавшегося со мной, и поэтому мне будет отправлено письмо. Я использую библиотеку PHPMailer из https://github.com/PHPMailer/PHPMailer/tree/master, а следующий – фрагмент кода, который я использую.

<?php require("class.phpmailer.php"); $mail = new PHPMailer(); $mail->IsSMTP(); $mail->SMTPSecure = 'tls'; $mail->Host = "resolver1.opendns.com"; // this SMTP server of my machine //$mail->Host = "208.67.222.222";//ip ; which one to use the resolver1.opendns.com or 208.67.222.222 ??? $mail->From = "xyz@gamil.com;//email id of the person $mail->AddAddress("datta.dhonde@coreathena.com");//my email id $mail->Subject = "First PHPMailer Message"; $mail->Body = "Hi! \n\n This is my first e-mail sent through PHPMailer."; $mail->WordWrap = 50; if(!$mail->Send()) { echo 'Message was not sent.'; echo 'Mailer error: ' . $mail->ErrorInfo; } else { echo 'Message has been sent.'; } ?> 

Я получаю сообщение об ошибке «Сообщение не отправлено. Ошибка отправителя: Ошибка SMTP connect ()». Я не понимаю, в чем проблема.? $ mail-> Host = ""; прокомментируйте, что это значит?

Добавить $mail->SMTPDebug = 1; и попытайтесь отладить проблему.

Как хорошо видно @joydesigner, для подключения через SMTP вам необходимо передать hostname, username and password а затем он должен подключиться и отправить электронную почту.

 $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'jswan'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // tls or ssl connection as req 

Здесь я вижу, что вы прошли только, информацию о host , добавьте username & password и попробуйте один раз.

Также проверьте, что TLS/SSL PORT открыт для вашего сервера:

проверить с:

 telnet resolver1.opendns.com 25 

Возможно, это ваша проблема с конфигурацией.

Пример конфигурации phpmailer выглядит следующим образом:

 <?php require 'class.phpmailer.php'; $mail = new PHPMailer; $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = 'smtp1.example.com;smtp2.example.com'; // Specify main and backup server $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = 'jswan'; // SMTP username $mail->Password = 'secret'; // SMTP password $mail->SMTPSecure = 'tls'; // Enable encryption, 'ssl' also accepted $mail->From = 'from@example.com'; $mail->FromName = 'Mailer'; $mail->addAddress('josh@example.net', 'Josh Adams'); // Add a recipient $mail->addAddress('ellen@example.com'); // Name is optional $mail->addReplyTo('info@example.com', 'Information'); $mail->addCC('cc@example.com'); $mail->addBCC('bcc@example.com'); $mail->WordWrap = 50; // Set word wrap to 50 characters $mail->addAttachment('/var/tmp/file.tar.gz'); // Add attachments $mail->addAttachment('/tmp/image.jpg', 'new.jpg'); // Optional name $mail->isHTML(true); // Set email format to HTML $mail->Subject = 'Here is the subject'; $mail->Body = 'This is the HTML message body <b>in bold!</b>'; $mail->AltBody = 'This is the body in plain text for non-HTML mail clients'; if(!$mail->send()) { echo 'Message could not be sent.'; echo 'Mailer Error: ' . $mail->ErrorInfo; exit; } echo 'Message has been sent'; 

Здесь $ mail-> Host является почтовым сервером smtp. Обычно начинается с smtp.

Вы должны проверить порт tcp 25 на resolver1.opendns.com, он будет блокировать или не запускать stmpd, например sendmail или некоторый MTA.

попробуйте telnet resolver1.opendns.com 25

и вы обнаружите, что порт tcp 25 не открывается.