Visualizzazione risultati 1 fino 21 di 21

Discussione: Problema null'utilizzo di PHPMailer()

  1. #1
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito Problema null'utilizzo di PHPMailer()

    Vorrei, poter inviare, dal mio sito, email tramite smtp ( host smtp.google.com ).

    Dopo aver scaricato la libreria mi sono creato una funzione per l'invio di email:

    Codice PHP:
    require("PHPMailer_5.2.0/class.phpmailer.php");

    function
    smtp_mail($to, $subject, $message, $isHtml = true)
    {
    $msg = $message;

    if (
    $isHtml) {
    $msg = "<body style=\"padding:15px 0\">
    <table border=\"0\" style=\"margin:0 auto; width:700px; border:double #e6e6e6 3px\">
    <tr>
    <td height=\"100px\">
    ...
    </td>
    </tr>
    <tr>
    <td bgcolor=\"#f2f2f2\" style=\"padding:15px 6px\">
    $message</td>
    </tr>
    </table>
    </body>"
    ;
    }

    $mail->IsSMTP();
    $mail->Host = "smtp.gmail.com";
    $mail->SMTPAuth = true;
    $mail->Username = "sevenjeak";
    $mail->Password = "***";

    $mail->From = "sevenjeak@gmail.com";
    $mail->FromName = "Sevenjeak";

    $mail->WordWrap = 50;
    $mail->IsHTML($isHtml);

    $mail->Subject = $subject;
    $mail->Body = $msg;
    $mail->AltBody = $message;

    return
    $mail->send();
    }
    Ma appena provo ad inviare la mail tramite la funzione da me creata, mi restituisce questo errore:

    Fatal error: Call to a member function IsSMTP() on a non-object in ********

    come potrei risolvere?
    Ultima modifica di sevenjeak : 03-10-2017 alle ore 16.55.38

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Boh prova a mettere in cima questo error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);

  3. #3
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Non hai inizializzato la variabile $mail
    Codice PHP:
    $mail = new PHPMailer;
    Questo va fatto prima delle invocazione dei metodi, ad esempio $mail->isSMTP().

  4. #4
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Già, me no sono accorto da solo.. eppure dal messaggio si capisce andavo di fretta ed oh fatto un pastrocchio

    Cmq vedendo un'altro tutorial mi sono accorto che mancava la porta di connessione e che gmail richiede il protocollo ssl, mi ero dimenticato anche il destinatario della mail

    Ho modificato il mio codice in questo modo:

    Codice PHP:
    function smtp_mail($to, $subject, $message, $isHtml = true)
    {
    $msg = $message;

    if (
    $isHtml) {
    $msg = "<body style=\"padding:15px 0\">
    <table border=\"0\" style=\"margin:0 auto; width:700px; border:double #e6e6e6 3px\">
    <tr>
    <td height=\"100px\" background=\"http://sevenjeak.altervista.org/pctools2/image/header.gif\">
    <img src=\"http://sevenjeak.altervista.org/pctools2/logo.php\" />
    </td>
    </tr>
    <tr>
    <td bgcolor=\"#f2f2f2\" style=\"padding:15px 6px\">
    $message</td>
    </tr>
    </table>
    </body>"
    ;
    }

    $mail = new PHPMailer();

    $mail->IsSMTP();
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465;
    $mail->SMTPDebug = 0;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Username = "sevenjeak";
    $mail->Password = "***";

    $mail->From = "sevenjeak@gmail.com";
    $mail->FromName = "Sevenjeak";

    $mail->WordWrap = 50;
    $mail->IsHTML($isHtml);

    $mail->Subject = $subject;
    $mail->Body = $msg;
    $mail->AltBody = $message;
    $mail->AddAddress($to);

    return
    $mail->send();
    }

    //------ STRING ENCRYPTION / DECRYPTION
    function str_crypt($data, $key)
    {
    if(
    strlen($key)<32) $key = md5($key);
    $ld = strlen($data);
    $lk = strlen($key);

    for(
    $i=0, $crdata=""; $i<$ld; $i++){
    $crdata .= sprintf("%02X",(ord($data[$i]))^(ord($key[$i%$lk])));
    }

    return
    $crdata;
    }
    Provando ad inviare la mail però, la classe mi da errore di autenticazione, eppure password e username sono quelli.
    Ultima modifica di sevenjeak : 04-10-2017 alle ore 09.49.28

    Sevenjeak
    Software developer and much more

  5. #5
    mzanella non è connesso AlterGuru
    Data registrazione
    29-12-2015
    Messaggi
    1,954

    Predefinito

    Può darsi che il tuo account gmail abbia attiva la 2-step verification, prova a disabilitarla seguendo le istruzioni di Google.

  6. #6
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ultima modifica di darbula : 04-10-2017 alle ore 10.29.54

  7. #7
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Non ho attivato la verifica in due passaggi e ho già provato a mettere l'indirizzo email come username, ansi, ho seguito proprio quel tutorial per correggere il mio precedente script, nel mio script ho messo solo l'username per vedere se cambiava qualcosa, visto che @gmail.com è scontato ( infatti in gmail, sia se lo mette o no, puoi accedere lo stesso ).

    Anche se non ho capito cosa centri l'attivazione dell'IMAP, visto che uso SMTP e non IMAP ho provato lo stesso ad attivarla, ma niente, mi dice lo stesso che PHPMailer non può autenticarmi.
    Ultima modifica di sevenjeak : 04-10-2017 alle ore 11.02.53

    Sevenjeak
    Software developer and much more

  8. #8
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Non vorrei che fosse problema di open SSL non aggiornato.. Hai MySQL 5.6? imap o pop3 = posta che arriva al tuo account... Non ne scontato dato che phpmailer usa qualsiasi e-mail e non solo gmail (comunque gmail usa anche estensioni diverse da @gmail.com dipende dalla localizzazione da dove viene creato l'account)
    Ultima modifica di darbula : 04-10-2017 alle ore 11.17.37

  9. #9
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Lo script è caricato sul mio spazio AlterVista che ha Mysql5.1, ho richiesto ora l'aggiornamento a Mysql5.6, da quello che so gmail usa pop3 per la posta in arrivo, ma in questo caso, per inviare le email non mi dovrebbe interessare la posta in unscita? o sbaglio? in'ogni caso prima avevo attivato l'inoltro IMAP, come suggeritomi da te nel precedente post, anche se non ho risolto.
    Ultima modifica di sevenjeak : 04-10-2017 alle ore 11.58.49

    Sevenjeak
    Software developer and much more

  10. #10
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ops.. Non volevo farti abilitare IMAP ma volevo offrirti una paronamica di cosa configurare... IMAP a differenza di pop scarica anche i vecchi messaggi... Certo che per il solo invio non ti serve la ricezione :D

  11. #11
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Citazione Originalmente inviato da darbula Visualizza messaggio
    Ops.. Non volevo farti abilitare IMAP
    Infatti mi pareva strano, cmq lo subito disattivato dopo aver provato il mio script, ho letto su internet ( purtroppo non ho salvato il link ) che accedendo al tua account google ( no in gmail ) dovresti andare su app e siti collegati, nella scheda Accesso e sicurezza, per mettere su on l'accesso ad app meno sicure, ma niente, non funziona lo stesso, sto vedendo ora se c'è qualche altra funzione utile.

    Sevenjeak
    Software developer and much more

  12. #12
    Guest

    Predefinito

    Se non è cambiato ultimamente Altervista permette solamente connessioni verso l'esterno solo sulle porte 80 (http) e (https) 443 (anche sbloccando le connessioni server to server)
    Ultima modifica di stefanodurso : 04-10-2017 alle ore 12.48.43

  13. #13
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Ogni schema ha la sua porta specifica... Bisogna vedere se c'è un blocco per porte diverse da 25 (per SMTP).. PS. Aspetta lo sto testando
    Ultima modifica di darbula : 04-10-2017 alle ore 13.03.37

  14. #14
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Quindi non potrei connetermi tramite smtp?

  15. #15
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    @maznella io non sono un programmatore ma con l'ultima versione di phpmailer cosa ci vuole oltre php 5.5.. https://github.com/PHPMailer/PHPMailer nel repository ci sta pure un esempio per gmail

  16. #16
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Sto vedendo ora il link, anche se non me la cavo proprio bene con l'inglese, cmq, nel frattempo, sono passato a mysql5.6 ( anche se non so se questo fa qualche differenza ), non mi spiego cosa centri mysql.

    In'ogni caso, riprovando il mio script, con qualche piccola modifica:

    Codice PHP:
    require("PHPMailer_5.2.0/class.phpmailer.php");
    require(
    "PHPMailer_5.2.0/class.smtp.php");

    function
    smtp_mail($to, $subject, $message, $isHtml = true)
    {
    $msg = $message;

    if (
    $isHtml) {
    $msg = "<body style=\"padding:15px 0\">
    <table border=\"0\" style=\"margin:0 auto; width:700px; border:double #e6e6e6 3px\">
    <tr>
    <td height=\"100px\" background=\"http://sevenjeak.altervista.org/pctools2/image/header.gif\">
    <img src=\"http://sevenjeak.altervista.org/pctools2/logo.php\" />
    </td>
    </tr>
    <tr>
    <td bgcolor=\"#f2f2f2\" style=\"padding:15px 6px\">
    $message</td>
    </tr>
    </table>
    </body>"
    ;
    }

    $mail = new PHPMailer();

    $mail->IsSMTP();
    $mail->Host = "smtp.gmail.com";
    $mail->Port = 465;
    $mail->SMTPDebug = 1;
    $mail->SMTPAuth = true;
    $mail->SMTPSecure = "ssl";
    $mail->Username = "sevenjeak";
    $mail->Password = "googleSimone19880";

    $mail->SetFrom("sevenjeak@gmail.com", "Sevenjeak");

    $mail->WordWrap = 50;
    $mail->IsHTML($isHtml);

    $mail->Subject = $subject;
    $mail->Body = $msg;
    $mail->AltBody = $message;
    $mail->AddAddress($to);

    return
    $mail->send();
    }
    Eseguendo lo script mi da i seguenti errori:
    Codice:
    SMTP -> ERROR: EHLO not accepted from server: Method EHLO is not supported. 
    SMTP -> ERROR: HELO not accepted from server: 
    SMTP -> ERROR: AUTH not accepted from server: 
    SMTP -> NOTICE: EOF caught while checking if connectedSMTP Error: Could not authenticate.
    P.S.: Mi restituisce gli stessi errore anche levando la seconda require ( class.smtp.php )

    Sevenjeak
    Software developer and much more

  17. #17
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    Chiedi e ti sarà dato... se aggiorni MySQL verranno aggiornate alcune librerie tra cui openssl che ti serve per compatibilità di sicurezza (https o tls in generale)... Con l'ultima versione invece riscontro un errore differente
    2017-10-05 21:24:48 SMTP NOTICE: EOF caught while checking if connected
    SMTP Error: Could not connect to SMTP host.
    SMTP connect() failed. https://github.com/PHPMailer/PHPMail...roubleshooting

    PS. Host "smtp.gmail.com" tls al posto di ssl e porta 587.
    EDIT:con lo stesso codice è un server locale mi viene bloccata la connessione da google perché la ritiene poco sicura... Ritengo che sono bloccate le connessioni verso l'esterno.
    Ultima modifica di darbula : 06-10-2017 alle ore 03.06.56

  18. #18
    Guest

    Predefinito

    Ripeto, Altervista permette connessioni solo sulle porte 80 e 443.
    Inutile provare su 465, 587 o altre, non funziona.

  19. #19
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Il fatto è che, volevo un'alternativa alla semplice funzione mail() che mi inviasse la posta tramite server SMTP, cosi da evitare, che venga riconosciuta come spam dal provider a qui la invio.

    Sevenjeak
    Software developer and much more

  20. #20
    Guest

    Predefinito

    Karl94 QUI:
    Devi usare uno strumento che utilizzi la funzione mail di PHP. Gli script PHP su AlterVista non possono effettuare connessioni verso server SMTP.
    Ma se cerchi sul forum ci sono parecchie discussioni a riguardo e tutte con la stessa risposta.

  21. #21
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,767

    Predefinito

    Ok, vorra dire che continueró ad usare la funzione mail().

    Grazie lo stesso per le risposte

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •