Соединение PEAR Mail отказалось от smtp.gmail.com - PullRequest
2 голосов
/ 30 августа 2011

У меня бесконечные проблемы при попытке отправить почту с использованием пакета pear mail:

Я использую xampp на своем локальном компьютере для целей тестирования, и следующий код работает отлично:

//PEAR

    require_once('../PEAR/Mail.php');


    $from = "<sender@domain.com>";
    $to = "<receiver@domain.com>";
    $subject = "Hi";
    $body = "Testing message";

    $host = "ssl://smtp.gmail.com"; //ssl://
    $port = "465";
    $username = "my_account@gmail.com";
    $password = "**********";

    $headers = array ('From' => $from,
      'To' => $to,
      'Subject' => $subject);
    $smtp = Mail::factory('smtp',
      array ('host' => $host,
        'port' => $port,
        'auth' => true,
        'username' => $username,
        'password' => $password));

    $mail = $smtp->send($to, $headers, $body);

    function &factory($driver, $params = array())
{
    $driver = strtolower($driver);
    @include_once 'Mail/' . $driver . '.php';
    $class = 'Mail_' . $driver;
    if (class_exists($class)) {
        $mailer = new $class($params);
        return $mailer;
    } else {
        return PEAR::raiseError('Unable to find class for driver ' . $driver);
    }
}


   if (PEAR::isError($mail)) {
      echo("<p>" . $mail->getMessage() . "</p>");
     } else {
      echo("<p>Message successfully sent!</p>");
     }

    //end of php tag

ОДНАКО, когда я загружаю файл на сетевой веб-сервер и запускаю тот же сценарий, я получаю следующую ошибку:

"Не удалось подключиться к ssl: //smtp.gmail.com: 465[SMTP: Не удалось подключить сокет: соединение отклонено (код: -1, ответ:)] "

Я также пробовал порты 587 и 443, но безрезультатно.Я предполагаю, что проблема должна быть связана с socket.php, smtp.php, mail.php или даже с файлами конфигурации сервера, так как в приведенном выше коде нет ничего плохого.Я был бы чрезвычайно признателен, если бы кто-то мог указать мне правильное направление!

1 Ответ

0 голосов
/ 28 октября 2012

Да, потому что ваш хост может не поддерживать ssl-соединение.

Попросите ваш хост для поддержки php_openssl.Или вы можете вручную попробовать следующее, чтобы загрузить DLL.

if (dl (php_openssl.so)) или if (dl (php_openssl.dll)) *

это общая ошибка, поскольку файл extension = php_openssl.dll не комментируется на сервере.

...