2010-10-14 2 views
2

En utilisant PHP, j'essaie de router les emails via AuthSMTP (un service SMTP hébergé). Le problème est que la fabrique de courrier PEAR essaie automatiquement de négocier une connexion TLS avec le serveur. Plutôt que de simplement ignorer la tentative, AuthSMTP renvoie une erreur. J'ai besoin d'un moyen de dire explicitement à la classe Mailer de ne pas essayer d'utiliser TLS. Aucune suggestion?Comment désactiver explicitement TLS avec l'usine PEAR Mail?

$from = "Example <[email protected]>"; 
    $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 me donne l'erreur suivante:

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) 

Répondre

1

Cela ne peut pas être effectué avec une version actuelle du package PEAR Mail - mais is a requested feature. J'ai téléchargé un correctif afin que cela puisse être fait. Espérons qu'une nouvelle version sera distribuée bientôt.

+0

cool. J'apprécie la réponse et la réactivité aux commentaires de la communauté. Je garderai un oeil sur une version mise à jour pour mon prochain projet. – jamieb

0

commencé à utiliser PHPMailer au lieu et a fonctionner en 5 minutes.

6

La façon la plus simple est de changer $ = true tls à $ tls = false dans la définition de la fonction auth dans PEAR \ NET \ SMTP.php

+0

Cela a fonctionné pour moi, j'ai eu le même problème exact que l'OP. Ceci s'est débarrassé du message d'erreur pour AuthSMTP, mais m'a quand même permis de faire le SSL pour envoyer par GMail et tel. Merci @Nir! – Michael