Domanda

Sto cercando di inviare e-mail SMTP utilizzando PHPMailer, ma continuo a ricevere questo messaggio di errore, tutte le idee su come sbarazzarsi di esso?
Sto cercando di connettersi tramite SSL sulla porta 465.

SMTP -> FROM SERVER: 
SMTP -> FROM SERVER: 
SMTP -> ERROR: EHLO not accepted from server: 

Notice: fputs() [function.fputs]: send of 18 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 494
SMTP -> FROM SERVER: 
SMTP -> ERROR: HELO not accepted from server: 

Notice: fputs() [function.fputs]: send of 12 bytes failed with errno=32 Roura přerušena (SIGPIPE) in /home/www/amazonek.cz/subdomains/library/PHPMailer_v5.1/class.smtp.php on line 212
SMTP -> ERROR: AUTH not accepted from server: 
SMTP Error: Could not authenticate.

Il mio codice:

  require_once('../library/PHPMailer_v5.1/class.phpmailer.php');

        try{
            $mail = new PHPMailer(true);
            $mail->IsSMTP();
            $mail->SMTPAuth = true;
            $mail->Host = SMTP_SERVER;
            $mail->Port = SMTP_PORT;
            $mail->Username = SMTP_USERNAME;
            $mail->Password = SMTP_PASSWORD;
            $mail->SMTPDebug = 2;
            $mail->SetFrom(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);
            $mail->Subject = 'AMAZONEK.cz - objednávka číslo '.$_SESSION['orderId'];
            $mail->MsgHTML('<b>Ahoj</b>');
            $mail->AddAddress($_SESSION['user']['email'], $_SESSION['user']['name'].' '.$_SESSION['user']['surname']);
            $mail->AddBCC(MAIL_ORDERS_ADDRESS, MAIL_ORDERS_NAME);

            if(!$mail->Send()) throw new Exception($mail->ErrorInfo);
        }
        catch(Exception $e){
            echo $e->getMessage();
        }

definizione Costanti:

define('SMTP_SERVER', 'smtp.ebola.cz');
define('SMTP_PORT', 465);
define('SMTP_USERNAME', 'myEmail@myDomain.tld');
define('SMTP_PASSWORD', '***CENSORED***');

define('MAIL_ORDERS_ADDRESS', 'myEmail@myDomain.tld');
define('MAIL_ORDERS_NAME', 'My Name');

Tutte le idee?

È stato utile?

Soluzione

Per quanto posso vedere tutto va bene con il vostro codice. Il tuo errore è:

  

Errore SMTP:. Impossibile autenticarsi

Il che significa che le credenziali che hai invio vengono rifiutati dal server SMTP. Assicurarsi che l'host, la porta, username e password sono buone.

Se si desidera utilizzare TLS, prova ad aggiungere:

$mail->SMTPSecure = 'tls';

Se si desidera utilizzare SSL, prova ad aggiungere:

$mail->SMTPSecure = 'ssl';

Tenga presente che:

  • Alcuni server SMTP può proibire le connessioni da "outsider".
  • Alcuni server SMTP non supportano le connessioni SSL (o TLS).

questo esempio può aiutare (GMail sicura SMTP).

Altri suggerimenti

Prova a inviare una e-mail attraverso il server SMTP che manualmente / da un mailer interattivo (ad esempio Mozilla Thunderbird). Dagli errori, sembra che il server non accetterà le credenziali. È che SMTP in esecuzione sulla porta, o è SSL + SMTP? Lei non sembra essere utilizzando la connessione sicura nel codice che hai postato, e non sono sicuro se PHPMailer effettivamente sostiene SSL + SMTP.

(primo risultato di googling nome host del server SMTP: http://podpora.ebola.cz/idx.php/0/006/article/Strucny-technicky-popis-nastaveni-sluzeb.html sembra dire "SMTPs mail di invio: il collegamento sicuro SSL, porta:. 465" )

Sembra che PHPMailer fa supporto SSL; almeno dal questo . Quindi, è necessario cambiare questo:

define('SMTP_SERVER', 'smtp.ebola.cz');

in questo modo:

define('SMTP_SERVER', 'ssl://smtp.ebola.cz');

porta prova 25 invece di 456.

ho ottenuto lo stesso errore quando si utilizza la porta 456, e la modifica a 25 funzionato per me.

Questo può sembrare un salto nel buio , ma assicurarsi che PHP è stato rispettato OpenSSL se SMTP richiede SSL.

Per controllare l'uso phpinfo()

Speranza che aiuta!

Sì, è necessario OpenSSL per funzionare correttamente. Il mio sito test di backup ha funzionato, il mio server di vivere non ha fatto. Differenza? server di vivere non ha avuto OpenSSL entro configurazione di PHP.

  

SMTP -> DA SERVER:
  SMTP -> DA SERVER:
  SMTP -> ERRORE: EHLO non accettata dal server:

che è tipico di cercare di connettersi a un servizio SSL con un cliente che non utilizza SSL

  

Errore SMTP:. Impossibile autenticarsi

nessuna sorpresa lì non essendo riuscito a iniziare una conversazione SMTP authentigation non è un'opzione,.

phpmailer non fa SSL implicito (aka TLS su Connect, SMTPS) A corto di riscrittura smtp.class.php per includere il supporto per esso non è alcun modo per fare ciò che si chiede.

Usa porta 587 con SSL esplicito (aka TLS, STARTTLS), invece.

Ho avuto problema molto simile per qualcosa come un'ora, fino a quando ho capito cosa sia andato storto. Il mio problema era, che ho usato SSL , invece di ssl . Check è maiuscole e minuscole nel codice. AlexV mi ha guidato alla fonte del problema. Che HELO / EHLO -stuff sembra irrilevante.

client SMTP semplice con flusso php presa con TLS / SSL SMTP STARTTLS comando: https://github.com/breakermind/PhpMimeParser/blob/master/PhpSmtpSslSocketClient. php

lavora con gmail.com con autenticazione:

<?php
// Login email and password
$login = "your-email@cool.xx";
$pass = "123456";

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

$ctx = stream_context_create();
stream_context_set_option($ctx, 'ssl', 'verify_peer', false);
stream_context_set_option($ctx, 'ssl', 'verify_peer_name', false);
try{
    // echo $socket = stream_socket_client('ssl://smtp.gmail.com:587', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    echo $socket = stream_socket_client('tcp://smtp.gmail.com:587', $err, $errstr, 60, STREAM_CLIENT_CONNECT, $ctx);
    if (!$socket) {
        print "Failed to connect $err $errstr\n";
        return;
    }else{
        // Http
        // fwrite($socket, "GET / HTTP/1.0\r\nHost: www.example.com\r\nAccept: */*\r\n\r\n");
        // Smtp
        echo fread($socket,8192);
        echo fwrite($socket, "EHLO cool.xx\r\n");
        echo fread($socket,8192);

        // Start tls connection
        echo fwrite($socket, "STARTTLS\r\n");
        echo fread($socket,8192);

        echo stream_socket_enable_crypto($socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);

        // Send ehlo
        echo fwrite($socket, "EHLO cool.xx\r\n");
        echo fread($socket,8192);

        // echo fwrite($socket, "MAIL FROM: <hello@cool.com>\r\n");
        // echo fread($socket,8192);

        echo fwrite($socket, "AUTH LOGIN\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, base64_encode($login)."\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, base64_encode($pass)."\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "rcpt to: <to-email@boome.com>\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "DATA\n");
        echo fread($socket,8192);

        echo fwrite($socket, "Date: ".time()."\r\nTo: <to-email@boome.com>\r\nFrom:<zour-email@cool.xx\r\nSubject:Hello from php socket tls\r\n.\r\n");
        echo fread($socket,8192);

        echo fwrite($socket, "QUIT \n");
        echo fread($socket,8192);

        /* Turn off encryption for the rest */
        // stream_socket_enable_crypto($fp, false);

        fclose($socket);
    }
}catch(Exception $e){
    echo $e;
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top