Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    phpmailer SMTP Error: Could not connect to SMTP host

    SMTP Error: Could not connect to SMTP host

    questo è il messaggio di errore che restituisce phpmailer quando tento di inviare una email con smtp da un computer della lan al server smtp remoto di google

    ho due sistemi uguali con win7x64, wamp2.1x32, phpmailer5.1 e con lo stesso script php

    nel primo phpmailer funziona, mentre nell'altro appena installato, phpmailer restituisce l'errore

    come posso controllare che il sistema sottostante funzioni, che non ci siano servizi in conflitto con phpmailer e con l'invio di richieste smtp??? parlo da semi-inesperto di sistemistica, protocolli, porte e servizi windows

    thank you
    semplicità ... al sol nominarla sembra svanire

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Non è che sul pc sul quale lo script funziona hai/hanno modificato anche qualcosa sulla configurazione di php e sull'altro no?

  3. #3
    ciao Alhazred ho controllato le impostazioni di php sono identiche,

    ieri andavo a memoria e avevo sbagliato msg di errore , sarò piu preciso

    il msg è
    SMTP Error: Could not authenticate

    viene generato nella funzione SMTP::Authenticate() di phpmailer

    codice:
    **
       * Performs SMTP authentication.  Must be run after running the
       * Hello() method.  Returns true if successfully authenticated.
       * @access public
       * @return bool
       */
      public function Authenticate($username, $password) {
      
        // Start authentication
        fputs($this->smtp_conn,"AUTH LOGIN" . $this->CRLF);
    
        $rply = $this->get_lines();
        $code = substr($rply,0,3);
    
        if($code != 334) {
          $this->error =
            array("error" => "AUTH not accepted from server",
                  "smtp_code" => $code,
                  "smtp_msg" => substr($rply,4));
          if($this->do_debug >= 1) {
            echo "SMTP -> ERROR: " . $this->error["error"] . ": " . $rply . $this->CRLF . 
    
    '
    ';
          }
          return false;
        }
    
    ....
    ....
    
        return true;
      }

    in particolare qui
    ...
    $rply = $this->get_lines();
    $code = substr($rply,0,3);
    if($code != 334) {
    ...
    }

    ho stampato $rply
    echo $rply;
    $rply = 530 5.7.0 Must issue a STARTTLS command first. y10sm15285433wbm.14
    semplicità ... al sol nominarla sembra svanire

  4. #4
    ma dal sistema appena installato dove phpmailer restituisce l'errore, riesci a mandare normalmente le mail???

    perché sembra che quel sistema non sia abilitato a usare l'SMTP. Devi chiedere a chi ammistra il server SMTP di abilitare a mandare mail anche la macchina appena installata

  5. #5
    sto parlando di un computer in una lan in cui ho appena ripristinato win7 , installato wamp e che usa phpmailer per inviare una richiesta al server smtp di google per l'invio della posta

    ma dal sistema appena installato dove phpmailer restituisce l'errore, riesci a mandare normalmente le mail???
    ho installato un client di posta, mozilla thunderbird, e anche da li non si riesce ad inviare la posta, compare l'alert con lo stesso errore di phpmailer
    530 5.7.0 Must issue a STARTTLS command first.
    se però, da mozilla thunderbird, imposto una connessione smtp non criptata non funziona e da l'errore, se invece inposto una connessione criptata con ssl allora funziona e invia l'email

    si potrebbe creare il certificato ssl anche su wamp, ma oltre ad essere complicato è probabile che nel ripristino di windows qualcosa non è andato, o anche no

    per ripristino intendo che ho estratto i dischi di ripristino di win7(originale) per installarlo in un nuovo hhd ssd al posto di quello vecchio

    mi sa che devo rifare la procedura da capo, riestrarre i dischi di ripristino, formattare il nuovo ssd, e reinstallare win sperando che vada tutto ok

    sarebbe interessante prima capire cosa c'è che non va, se c'è qualche servizio in conflitto, file .dll di sistema corrotto o non so, ps l'antivirus disinstallto e firewall di win disattivato
    una richiesta smtp è comunque una richiesta TCP? quali sono i servizi di win coinvolti?

    andando piu a fondo nel debug di phpmailer qualcosa che non va gia nel metodo SendHello() con cui si stabilisce una prima comunicazione con il server smtp remoto
    nel sistema funzionante la risposta ($rply) del server smtp di google è

    codice:
    250-mx.google.com at your service, [151.52.194.247] 250-SIZE 35882577 250-8BITMIME 250-AUTH LOGIN PLAIN XOAUTH 250 ENHANCEDSTATUSCODES
    nel sistema non funzionante la risposta invece è

    codice:
    250-mx.google.com at your service, [151.52.194.247] 250-SIZE 35882577 250-8BITMIME ENHANCEDSTATUSCODES
    c'è una leggera differenza, manca
    250-AUTH LOGIN PLAIN XOAUTH

    quando poi viene chiamato il metodo SMTP::Authenticate()
    il server smtp di google restituisce l'errore 530
    530 5.7.0 Must issue a STARTTLS command first.
    riporto il metodo SMTP::SendHello()

    codice:
    private function SendHello($hello, $host) 
    { 
    fputs($this->smtp_conn, $hello . " " . $host . $this->CRLF);      
    $rply = $this->get_lines();
    $code = substr($rply,0,3);
    
    if($code != 250) { $this->error = ...}
    
    ...
    }
    scusate per la lunghezza ma ho voluto documentare quanto possibile anche per capirci di piu io stesso
    semplicità ... al sol nominarla sembra svanire

  6. #6
    Originariamente inviato da biagiopas
    quando poi viene chiamato il metodo SMTP::Authenticate()
    il server smtp di google restituisce l'errore 530
    530 5.7.0 Must issue a STARTTLS command first.
    scusa mi era sfuggito che usavi il server SMTP di gmail...
    comunque alllora l'errore 530 è proprio dovuto al fatto che SMTP di gmail usa STARTTLS come SSL e quindi ti sta chiedendo di autenticarti via SSL


    in pratica devi configurare php per gestire SSL...

    vale a dire devi usare come host ssl://smtp.gmail.come e come porta la 465
    questo può essere un tentativo:
    ini_set("SMTP","ssl://smtp.gmail.com");
    ini_set("smtp_port","465");

    e poi fai altrettanto con Phpmailer
    questo potrebbe andare :
    $mail->Mailer = "smtp";
    $mail->Host = "ssl://smtp.gmail.com";
    $mail->Port = 465;


    vedi un po' se funge...

  7. #7
    il server smtp di google accetta sia connessioni smtp non criptate sulla porta 587, sia criptate con ssl alla porta 465, è una questione di configurazione della connessione smtp lato client

    ho provato sia phpmailer che mozilla thunderbird su qualsiasi computer e funzionano entrambe le connessioni tranne nella nuova installazione di win7 sul nuovo ssd dove non funziona la connessione non criptata sulla porta 587
    semplicità ... al sol nominarla sembra svanire

  8. #8
    ...non lo metto in dubbio...
    però se come mi ha detto il server smtp di google restituisce l'errore "530 5.7.0 Must issue a STARTTLS command first." vuol dire che ti sta chiedendo una connessione ssl per l'autenticazione...

    ..per il resto mi arrendo..
    in bocca al lupo
    P.

    ps: ah e se scopri qualcosa di utile ricordati di riesumare questo thread e scrivere la soluzione, così nel caso un altro avesse il tuo stesso rompicapo...

  9. #9
    non ho ancora perso la speranza di capire il nodo e in caso lo posterò su questa discussione

    anche se la prossima mossa probabilmente sarà quella di reinstallare win7 perchè ci sono diverse cose che non vanno

    grazie a tutti per la collaborazione
    semplicità ... al sol nominarla sembra svanire

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.