Как явно отключить TLS с фабрикой PEAR Mail? - PullRequest
2 голосов
/ 14 октября 2010

Используя PHP, я пытаюсь направить электронную почту через AuthSMTP (размещенный сервис SMTP). Проблема в том, что почтовая фабрика PEAR автоматически пытается согласовать соединение TLS с сервером. Вместо того, чтобы просто игнорировать попытку, AuthSMTP выдает ошибку. Мне нужен способ явно указать классу Mailer, чтобы он не пытался использовать TLS. Есть предложения?

    $from = "Example <noreply@example.com>";
    $to = $email;
    $subject = "This is an email";

    $body_text = "plain text here";
    $body_html = "<h1>HTML here!</h1>";

    $headers = array ('From' => $from,
    'To' => $to,
    'Subject' => $subject);

    $mime = new Mail_mime('rn');
    $mime->setTXTBody($body_text);
    $mime->setHTMLBody($body_html);

    $body = $mime->get();
    $hdrs = $mime->headers($headers);

    $host = "mail.authsmtp.com";
    $port = 26;
    $username = "my_username";
    $password = "whatever_password";

    $mailer = Mail::factory('smtp',
    array ('host' => $host,
     'auth' => true,
     'port' => $port,
     'username' => $username,
     'password' => $password));

    if (PEAR::isError($res)) {
        throw new Exception($res->getMessage());
    } else {
        return true;
    } 

AuthSMTP выдает мне следующую ошибку:

SMTP: Invalid response code received from server (code: 428, response: 4.0.0 Your account is using SSL - either disable it in your email client or enable it at http://control.authsmtp.com)

Ответы [ 3 ]

6 голосов
/ 27 апреля 2011

Самый простой способ - заменить $ tls = true на $ tls = false в определении функции auth в PEAR \ NET \ SMTP.php

1 голос
/ 15 октября 2010

Этого нельзя сделать с текущей версией пакета PEAR Mail, но является запрошенной функцией . Я загрузил патч, чтобы это можно было сделать. Надеемся, что новый релиз будет распространен в ближайшее время.

0 голосов
/ 15 октября 2010

Вместо этого переключился на использование PHPMailer, и он заработал за 5 минут.

...