Добрый день,
Я работаю над Phpmailer пару дней и не могу обойти эти ошибки SMTP Connect. Я отключил свой брандмауэр и дважды и трижды проверил, что мое имя пользователя и пароль верны. Я не могу получить доступ к файлу php.ini, потому что мой сервер облачно (Rackspace). Я связался с rackspace, и они сказали мне получить доступ к моему файлу.htaccess. Однако я не могу найти информацию о том, что добавить в файл.htaccess, чтобы у phpmailer не было ошибки SMTP-подключения. Ниже приведено описание кода и ошибок. Любую информацию интересует.
PS Я также посмотрел в файле php_errors.log, и там никаких ошибок phpmailer нет!
include("../phpmailer/class.phpmailer.php");
include("../phpmailer/PHPMailerAutoload.php");
include("../phpmailer/class.smtp.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->CharSet = 'utf-8';
$mail->ContentType = 'text/html';
$mail->SMTPDebug = 2;
$mail->SMTPAuth = true;
$mail->SMTPSecure = "ssl";
$mail->Host = "secure.emailsrvr.com";
$mail->Port = 465;
$mail->Username = "[email protected]";
$mail->Password = "password";
$mail->From = "[email protected]";
$mail->FromName = "xxx";
$mail->AddAddress('[email protected]', 'First Name');
$mail->IsHTML(true); // send as HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <strong>in bold!</strong>';
$mail->AltBody = 'This is a plain-text message body';
$mail->WordWrap = 80; // set word wrap
$mail->msgHTML(file_get_contents('..contents.htm'), dirname(__FILE__));
//Attach an image file
$mail->addAttachment('');
// HTML body
$body = "Hello";
if(!$mail->Send())
{
echo "Mailer Error: " . $mail->ErrorInfo;
}else{
echo "Message sent!";
}
Error1:
2014-12-08 17:35:42 Could not access file:
2014-12-08 17:36:03 SMTP ERROR: Failed to connect to server: Connection timed out (110)
2014-12-08 17:36:03 SMTP connect() failed. Mailer Error: SMTP connect() failed.
Error2:
2014-12-08 17:38:09 Could not access file:
2014-12-08 17:38:10 SERVER -> CLIENT: 220 smtp17.relay.dfw1a.emailsrvr.com ESMTP - VA Code Section 18.2-152.3:1 forbids use of this system for unsolicited bulk electronic mail (Spam)
2014-12-08 17:38:10 CLIENT -> SERVER: EHLO everyhome.com
2014-12-08 17:38:10 SERVER -> CLIENT: 250-smtp17.relay.dfw1a.emailsrvr.com 250-SIZE 75000000 250-AUTH PLAIN LOGIN 250-AUTH=PLAIN LOGIN 250 ENHANCEDSTATUSCODES
2014-12-08 17:38:10 CLIENT -> SERVER: AUTH LOGIN
2014-12-08 17:38:10 SERVER -> CLIENT: 334 VXNlcm5hbWU6
2014-12-08 17:38:10 CLIENT -> SERVER: cGF1bC5oZWNrQGV2ZXJ5aG9tZS5jb20=
2014-12-08 17:38:10 SERVER -> CLIENT: 334 UGFzc3dvcmQ6
2014-12-08 17:38:10 CLIENT -> SERVER: S2ltYmVybHkxMTU=
2014-12-08 17:38:11 SERVER -> CLIENT: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
2014-12-08 17:38:11 SMTP ERROR: Password command failed: 535 5.7.8 Error: authentication failed: UGFzc3dvcmQ6
2014-12-08 17:38:11 CLIENT -> SERVER: QUIT
2014-12-08 17:38:11 SERVER -> CLIENT: 221 2.0.0 Bye
2014-12-08 17:38:11 SMTP connect() failed. Mailer Error: SMTP connect() failed.
Это похоже на простой отказ аутентификации, поэтому, пожалуйста, дважды проверьте свое имя пользователя и пароль. Я предлагаю начать с одного из примеров, предоставляемых PHPMailer - это похоже на то, что оно основано на чем-то довольно старом, поэтому также убедитесь, что у вас есть последний PHPMailer из github.
Сократите свой код до абсолютного минимума, чтобы удалить источники ошибок - например, просто установите Body
непосредственно, не вызывайте msgHTML
, не загружайте внешний контент, не добавляйте вложения - просто msgHTML
все, что не является строго необходимым,
Попробуйте подключиться с помощью 'tls' на порту 587, и вы можете дать AuthType = 'PLAIN'
тоже пойти. Также убедитесь, что ответ EHLO соответствует серверу, к которому вы просили подключиться, в случае, если вы прозрачно перенаправлены вашим интернет-провайдером.
Проверка DNS и сетевых проблем также рассматривается в документах PHPMailer.
мой файл php.ini, потому что мой сервер облачно (Rackspace). Я связался с rackspace, и они сказали мне получить доступ к моему файлу.htaccess.?
все, что у вас есть в вашем файле php.ini, является конфигурацией sendmail, и вам не нужно ничего делать с.htaccess, только если вы собираетесь добавлять туда вещи, как в файле php.ini.
вам нужно посмотреть на майлога. вопрос
tailf/var/log/maillog
если вы находитесь в командной строке, чтобы получить лучшее отладочное сообщение.
это было бы лучше, если бы вы включили дополнительный журнал ошибок
require_once '../class.phpmailer.php';
$mail = new PHPMailer(true); //defaults to using php "mail()"; the true param means it will throw exceptions on errors, which we need to catch
try {
$mail->AddReplyTo('[email protected]', 'First Last');
//additional mail related code
} catch (phpmailerException $e) {
echo $e->errorMessage(); //Pretty error messages from PHPMailer
} catch (Exception $e) {
echo $e->getMessage(); //Boring error messages from anything else!
}
Опечатки:
$mail->msgHTML(file_get_contents('..contents.htm'), dirname(__FILE__));
^--- missing /?
если у вас действительно есть файл с двойным скрытым именем "..contents.htm".
Что касается ошибки smtp - она была отключена. some secure.emailsrvr.com:465
является межсетевым экраном/недостижимым с вашего php-сервера. Поскольку это не проблема программирования, мы не можем вам помочь - вам нужно выяснить, где/как пакеты данных попадают в битбакет.