Почта не отправляется при использовании phpmailer

Я использую следующий код для отправки почты на smtp-сервер.

<?php

// example on using PHPMailer with GMAIL
include("PHPMailer/class.phpmailer.php");
include("PHPMailer/class.smtp.php"); // note, this is optional - gets called from main class if not already loaded

$mail             = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth   = true;                  // enable SMTP authentication
$mail->Host       = "mucse491.eu.example.com";      // sets GMAIL as the SMTP server
$mail->Port       = 143;                   // set the SMTP port
$mail->Username   = "[email protected]";  // GMAIL username
$mail->Password   = "xxxx";            // GMAIL password

$mail->From       = "[email protected]";
$mail->FromName   = "mithun";
$mail->Subject    = "This is the subject";
$mail->AltBody    = "This is the body when user views in plain text format"; //Text Body
$mail->WordWrap   = 50; // set word wrap

$mail->AddAddress("[email protected]","First Last");

$mail->IsHTML(true); // send as HTML

if(!$mail->Send()) {
  echo "Mailer Error: " . $mail->ErrorInfo;
} else {
  echo "Message has been sent";
}

?>

Когда я запускаю его из командной строки, я получаю следующую ошибку

PHP Deprecated:  Function eregi() is deprecated in C:\wamp\www\phpmailer\class.p
hpmailer.php on line 593

Deprecated: Function eregi() is deprecated in C:\wamp\www\phpmailer\class.phpmai
ler.php on line 593
PHP Warning:  fputs() expects parameter 1 to be resource, integer given in C:\wa
mp\www\phpmailer\class.smtp.php on line 213

Warning: fputs() expects parameter 1 to be resource, integer given in C:\wamp\ww
w\phpmailer\class.smtp.php on line 213
Mailer Error: SMTP Error: Could not connect to SMTP host.

Когда я запускаю из браузера, я получаю следующую ошибку

Deprecated: Function eregi() is deprecated in C:\wamp\www\phpmailer\class.phpmailer.php on line 593

Warning: fsockopen() [function.fsockopen]: php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. in C:\wamp\www\phpmailer\class.smtp.php on line 122

Warning: fsockopen() [function.fsockopen]: unable to connect to mucse491.xx.example.com:143 (php_network_getaddresses: getaddrinfo failed: This is usually a temporary error during hostname resolution and means that the local server did not receive a response from an authoritative server. ) in C:\wamp\www\phpmailer\class.smtp.php on line 122
Mailer Error: SMTP Error: Could not connect to SMTP host. 

Пожалуйста, помогите мне.


person Vidya    schedule 06.10.2009    source источник
comment
$mail->Host = "mucse491.eu.xxxxx.com"; // sets GMAIL as the SMTP server - как это устанавливает gmail в качестве SMTP-сервера?   -  person Dominic Rodger    schedule 06.10.2009
comment
Вместо этого попробуйте SwiftMailer.   -  person Zed    schedule 06.10.2009
comment
Тот же код работает для smtp-сервера gmail. Но не для сервера моей компании.   -  person Vidya    schedule 06.10.2009


Ответы (3)


Очевидно, имя хоста mucse491.eu.infineon.com не может быть разрешено. Получаете ли вы правильный IP-адрес, когда разрешаете его с помощью nslookup, host или чего-то еще?

person Zed    schedule 06.10.2009
comment
На машине, где запущен PHP-скрипт? - person Zed; 06.10.2009

Похоже, у вас есть версия PHPMailer, предназначенная для работы со старой версией PHP.

So:

1) Перейти на более низкую версию PHP, которая совместима

or

2) Обновите PHPMailer до более новой версии (если она существует)

or

3) Используйте другую библиотеку рассылок

person Zak    schedule 06.10.2009
comment
Тот же код работает для smtp-сервера gmail. Но не для сервера моей компании - person Vidya; 06.10.2009
comment
Возможно, код работает для другого SMTP-сервера, потому что код выполняется по-разному для разных серверов. Например, для одного сервера может потребоваться аутентификация SMTP, а для другого — нет. Таким образом, вы можете столкнуться с разделом кода, который недействителен для данного стандарта связи SMTP. - person Zak; 05.10.2010
comment
Еще одна замечательная особенность большинства библиотек PHP заключается в том, что они включают исходный код. Скопируйте и вставьте в строки 580-610 или около того код, который выдает ошибку в class.phpmailer.php. Это будет более полезно, так как похоже, что fputs не получает допустимый дескриптор. - person Zak; 05.10.2010

Вы пытались указать IP-адрес SMTP-сервера непосредственно в $mail->Host? По той или иной причине у PHP возникают проблемы с разрешением DNS сервера, который вы пытаетесь использовать.

person Littlejon    schedule 06.10.2009