Ошибка почтовой программы PHPMAILER: сбой подключения SMTP () (нет доступа к Php.ini)

0

Добрый день,

Я работаю над 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.
  • 0
    Вы можете пинговать и телнетить к этому хосту?
  • 0
    Когда я пингуюсь, он просто продолжает давать мне строки кода. Из 98.129.229.83 будет написано 64 байта: icmp_seq = 0 ttl = 53 time = 48.301 мс, время немного изменится, а icmp_seq = 0 просто будет увеличиваться один за другим
Показать ещё 2 комментария
Теги:
.htaccess
smtp
phpmailer

3 ответа

0

Это похоже на простой отказ аутентификации, поэтому, пожалуйста, дважды проверьте свое имя пользователя и пароль. Я предлагаю начать с одного из примеров, предоставляемых PHPMailer - это похоже на то, что оно основано на чем-то довольно старом, поэтому также убедитесь, что у вас есть последний PHPMailer из github.

Сократите свой код до абсолютного минимума, чтобы удалить источники ошибок - например, просто установите Body непосредственно, не вызывайте msgHTML, не загружайте внешний контент, не добавляйте вложения - просто msgHTML все, что не является строго необходимым,

Попробуйте подключиться с помощью 'tls' на порту 587, и вы можете дать AuthType = 'PLAIN' тоже пойти. Также убедитесь, что ответ EHLO соответствует серверу, к которому вы просили подключиться, в случае, если вы прозрачно перенаправлены вашим интернет-провайдером.

Проверка DNS и сетевых проблем также рассматривается в документах PHPMailer.

0

мой файл 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!
}
  • 0
    Я видел, как многие из этих ошибок решаются после того, как люди раскомментировали строку ssl в файле php.ini. Я немного озадачен тем, как смотреть на проблему почтового журнала. Как мне это сделать?
  • 0
    проверка почтового журнала на собственном сервере OP бессмысленна - код пытается подключиться к ДРУГОМУ почтовому серверу.
Показать ещё 8 комментариев
0

Опечатки:

$mail->msgHTML(file_get_contents('..contents.htm'), dirname(__FILE__));
                                    ^--- missing /?

если у вас действительно есть файл с двойным скрытым именем "..contents.htm".

Что касается ошибки smtp - она была отключена. some secure.emailsrvr.com:465 является межсетевым экраном/недостижимым с вашего php-сервера. Поскольку это не проблема программирования, мы не можем вам помочь - вам нужно выяснить, где/как пакеты данных попадают в битбакет.

  • 0
    Извините, я просто изменил свое первоначальное имя файла на contents.htm, когда я написал вопрос. Это правильно в моем файле. Думаю, мне просто придется снова связаться с Rackspace и посмотреть, могут ли они помочь мне выяснить, почему истекает время. Спасибо
  • 0
    запустить оболочку и начать тестирование. вы можете пинговать адрес сервера? вы можете telnet к порту 465? если вы не можете пропинговать или telnet, сделайте traceroute - где пакеты начинают умирать?
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню