Visualizzazione risultati 1 fino 13 di 13
Like Tree2Likes
  • 1 Post By workandtravel
  • 1 Post By stefanodurso

Discussione: PHP: funzione mail() non scaturisce errori ma non invia l'email!

  1. #1
    workandtravel non è connesso Neofita
    Data registrazione
    28-02-2020
    Messaggi
    3

    Question PHP: funzione mail() non scaturisce errori ma non invia l'email!

    Salve a tutti, sto riscontrando dei problemi con la funzione mail() di php.
    Il problema consiste nel fatto che quest'ultima non invia nessuna mail, nonostante non presenti alcun tipo di errore.

    Codice:
    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);
    $to = 'alessandrowv@gmail.com';

    $headers = 'MIME-Version: 1.0' . "\r\n";
    $headers .= 'From: sender.workandtravel@gmail.com'. "\r\n";
    $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";

    $finalMessage = 'INFORMAZIONI DEL MITTENTE' . "\r\n<br>";
    $finalMessage .= 'Nome: ' . $name . "\r\n<br>";
    $finalMessage .= 'Email: ' . $email . "\r\n\n<br><br>";
    $finalMessage .= 'MESSAGGIO:' . "\r\n<br>";
    $finalMessage .= $message;

    //invio l'email
    if (mail($to,$subject,$finalMessage,$headers)){
    echo "OK";
    }else {
    echo "ERROR";
    }


    Come da codice soprastante, i dati riguardanti nome; email; soggetto; messaggio; vengono estrapolati da un form presenti nella pagina principale.
    Il codice funziona benissimo, infatti testando la mia copia identica del sito web in locale (WebServer XAMPP) funziona tutto senza alcun intoppo e l'email viene mandata senza problemi.
    Ciò che non riesco a capire é perché nella mia copia del sito presente sui server di altervista tale email non viene mandata, qualcuno saprebbe aiutarmi?
    Grazie in anticipo!

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

    Predefinito

    Dalla documentazione di mail:
    It is important to note that just because the mail was accepted for delivery, it does NOT mean the mail will actually reach the intended destination.
    Le mail inviate da AlterVista tramite PHP sono tristemente famose per finire nello spam o non arrivare proprio. Di solito modificare lo header "from" non piace ai servizi antispam, potrebbe essere una delle cause. Fai anche riferimento a questo messaggio..

    Il codice funziona benissimo, infatti testando la mia copia identica del sito web in locale (WebServer XAMPP) funziona tutto senza alcun intoppo e l'email viene mandata senza problemi.
    Una cosa non implica l'altra.
    Anche se la copia del sito web è identica, il sistema locale in cui l'hai scritto e testato è quasi certamente diverso da quello di AlterVista. A occhio questo vale soprattutto per la funzione mail, in quanto si affida a servizi "esterni" al server web, come sendmail.

    Edit: Rimosso il suggerimento relativo all'utilizzo di PHP Mailer, su AlterVista non è utilizzabile.
    Ultima modifica di mzanella : 21-04-2020 alle ore 13.43.14

    I suggerimenti che do più spesso:


  3. #3
    workandtravel non è connesso Neofita
    Data registrazione
    28-02-2020
    Messaggi
    3

    Predefinito

    Grazie della risposta!
    Come da te suggerito sono passato alle librerie PHPMailer, purtoppo anche con queste ultime sto ricevendo dei problemi inaspettati.

    Codice:

    <?php
    require_once('PHPMailer/PHPMailerAutoload.php');

    $name = trim($_POST['name']);
    $email = trim($_POST['email']);
    $subject = trim($_POST['subject']);
    $message = trim($_POST['message']);
    $to = 'alessandrowv@gmail.com';


    $mail = new PHPMailer(true);
    try {
    $mail->isSMTP(); // Set mailer to use SMTP
    $mail->Host = 'smtp.gmail.com'; // Specify main and backup SMTP servers
    $mail->SMTPAuth = true; // Enable SMTP authentication
    $mail->Username = 'emailsender.workandtravel@gmail.com'; // SMTP username
    $mail->Password = 'Chaves123!'; // SMTP password
    $mail->SMTPSecure = 'ssl'; // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587; // TCP port to connect to

    $mail->setFrom($email, $name); //Da chi viene mandata
    $mail->addAddress($to, 'Alessandro'); // Il destinatario
    $mail->addReplyTo($email, $name);

    $mail->isHTML(true); // Set email format to HTML

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

    /* Enable SMTP debug output. */
    $mail->SMTPDebug = 4;

    /* Finally send the mail. */
    if (!$mail->send())
    {
    /* PHPMailer error. */
    echo $mail->ErrorInfo;
    }else{
    echo "OK";
    }
    } catch (Exception $e) {
    echo "Message could not be sent.";
    echo "Mailer Error: " . $e->errorMessage();

    } catch (\Exception $e) {
    /* PHP exception (note the backslash to select the global namespace Exception class). */
    echo $e->getMessage();
    }

    ?>


    Output:


    2020-04-21 09:47:09 Connection: opening to ssl://smtp.gmail.com:587, timeout=300, options=array ()<br>
    2020-04-21 09:47:09 Connection: opened<br>
    2020-04-21 09:47:28 SMTP -&gt; get_lines(): $data is &quot;&quot;<br>
    2020-04-21 09:47:28 SMTP -&gt; get_lines(): $str is &quot;&quot;<br>
    2020-04-21 09:47:28 SERVER -&gt; CLIENT: <br>
    2020-04-21 09:47:28 CLIENT -&gt; SERVER: EHLO www.workandtravel.altervista.org<br>
    2020-04-21 09:47:28 SMTP -&gt; get_lines(): $data is &quot;&quot;<br>
    2020-04-21 09:47:28 SMTP -&gt; get_lines(): $str is &quot;Method EHLO is not supported.&quot;<br>
    2020-04-21 09:47:28 SERVER -&gt; CLIENT: Method EHLO is not supported.<br>
    2020-04-21 09:47:28 SMTP ERROR: EHLO command failed: Method EHLO is not supported.<br>
    2020-04-21 09:47:28 SMTP NOTICE: EOF caught while checking if connected<br>
    2020-04-21 09:47:28 Connection: closed<br>
    SMTP Error: Could not authenticate.<br>
    SMTP Error: Could not authenticate.<br>
    Message could not be sent.Mailer Error: <strong>SMTP Error: Could not authenticate.</strong><br />


    Premetto che sia Username sia Password sono corrette, ho anche provato combinazioni tra protocolli ssl e tls con relative porte 25; 465; 587.
    Tramite SMTPDebug sono riuscito a farmi dare in output un messaggio d'errore più dettagliato che ho riportato sopra.
    Ricercando ho trovato che magari il problema persiste all'interno delle librerie di PHPMailer e, magari, tali metodi vanno in conflitto con i protocolli di altervista. Cosa ne pensi?
    Grazie in anticipo!

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

    Predefinito

    Purtroppo ieri sera avevo scordato un aspetto importante: su AlterVista le connessioni SMTP in uscita sono disabilitate, quindi non è possibile usare PHP Mailer. Chiedo scusa .

    L'unica alternativa è effettivamente mail.

    I suggerimenti che do più spesso:


  5. #5
    workandtravel non è connesso Neofita
    Data registrazione
    28-02-2020
    Messaggi
    3

    Predefinito

    Ah, capisco e grazie mille.
    Sono tornato con la funzione mail e, stranamente, ora funziona senza intoppi.
    Per far si che l'email venga mandata ho semplicemente rimosso l'header dai parametri che passavo alla funzione mail(), infatti se gli passo il parametro header al suo interno l'email non viene inviata. Non ne comprendo il motivo. Un'altro fatto "strano" é che l'email viene ricevuta, a volte, all'interno della sezione Promozioni di gmail mentre altre volte viene recepita nella sezione Principale.
    Grazie per l'aiuto!
    mzanella likes this.

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

    Predefinito

    A posteriori immagino che il problema dello header sia causato dal fatto che spesso quest'ultimo viene utilizzato per contraffare un'email, per esempio modificare il parametro from può essere uno strumento per impersonare qualcun'altro, quindi i servizi antispam guardano questa cosa con sospetto e possono bloccare le email.

    Riguardo alla cartella in cui arriva: questa è una peculiarità di gmail, usa un algoritmo di apprendimento automatico per classificare le email. Non sempre è consistente.

    I suggerimenti che do più spesso:


  7. #7
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,745

    Predefinito

    Il campo header dovrebbe essere impostato come il proprio alias: tuonome@altervista.org.

    È vero che su AlterVista non è possibile utilizzare SMTP per servizi esterni, ma è comunque possibile usare altri servizi, come sendgrid.

    Ciao!

  8. #8
    Guest

    Predefinito

    Salve a tutti, ho lo stesso problema, ho letto tutti gli interventi ma non mi spiego come mai la stessa identica funzione, usata fuori da Altervista funzioni benissimo

  9. #9
    Guest

    Predefinito

    Citazione Originalmente inviato da workandtravel Visualizza messaggio
    Ah, capisco e grazie mille.
    Sono tornato con la funzione mail e, stranamente, ora funziona senza intoppi.
    Per far si che l'email venga mandata ho semplicemente rimosso l'header dai parametri che passavo alla funzione mail(), infatti se gli passo il parametro header al suo interno l'email non viene inviata. Non ne comprendo il motivo. Un'altro fatto "strano" é che l'email viene ricevuta, a volte, all'interno della sezione Promozioni di gmail mentre altre volte viene recepita nella sezione Principale.
    Grazie per l'aiuto!
    Ho provato anche rimuovendo l'header dai paramenti ma la posta non parte lo stesso. Rimane strano che usando la stessa funzione da un dominio Netsons e inviado al solito indirizzo di test su Gmail la mail invece arriva.

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

    Predefinito

    Citazione Originalmente inviato da netgreg Visualizza messaggio
    Salve a tutti, ho lo stesso problema, ho letto tutti gli interventi ma non mi spiego come mai la stessa identica funzione, usata fuori da Altervista funzioni benissimo
    La funzione, di per se, funziona benissimo anche su AlterVista. Se poi la mail non arriva a destinazione perché viene bloccata da qualche provider durante il percorso è un altro discorso.

    I suggerimenti che do più spesso:


  11. #11
    Guest

    Predefinito

    Citazione Originalmente inviato da mzanella Visualizza messaggio
    La funzione, di per se, funziona benissimo anche su AlterVista. Se poi la mail non arriva a destinazione perché viene bloccata da qualche provider durante il percorso è un altro discorso.
    Niente di tutto questo, perchè nella prova di controllo l'unica cosa che cambia è Altervista. Infatti la soluzione è molto piu banale, l'ho trovata accedendo all'account:

    "Gent. Webmaster,
    la funzione di invio email da tuo sito è stata temporaneamente disattivata per inattività. Dal momento che spesso i siti web non aggiornati vengono presi di mira dagli spammer abbiamo provveduto a disattivare la funzione di invio email a scopo preventivo.
    Potrai rattivare la funzionalità email cliccando sul seguente link."

    Non capisco cosa si intende per inattività. Controllando bene i messaggi la stessa cosa mi era successa 3 anni fa. Cosa devo fare perchè non si ripeta di nuovo? Io gestisco tutto via ftp, non faccio mai l'accesso via web
    Ultima modifica di netgreg : 11-05-2020 alle ore 10.39.21

  12. #12
    stefanodurso non è connesso Utente giovane
    Data registrazione
    18-10-2018
    Messaggi
    81

    Predefinito

    Dal regolamento:

    10.2 Un Sito Ospitato (o Blog) è considerato inattivo e/o abbandonato quando si verifichi almeno una delle seguenti condizioni:

    Il Sito Ospitato (o Blog) sia aperto da più di un mese e non abbia generato almeno 100 page views, negli ultimi 30 giorni (come da dati rilevati tramite i log del web server di Altervista e dove possibile tramite Google Analytics).

    Il Sito Ospitato sia per la maggior parte costituito da contenuti di spam (a titolo puramente esemplificativo: post, commenti, doorway, ecc...).

    l’Utente, titolare del Sito Ospitato (o Blog), non si sia loggato per 24 mesi al pannello di controllo del Sito Ospitato tramite il Portale Altervista e, a seguito dell’invio di apposita comunicazione via email all’Utente da parte di Altervista, quest’ultimo non abbia effettuato alcun login tramite il Sito Altervista al pannello di controllo del Sito Ospitato (o Blog) decorsi 30 giorni dall’invio della comunicazione email.

    Il Sito Ospitato (o Blog) contenga software non aggiornato che possa rappresentare un rischio per la sicurezza dei navigatori.

    Anche a tutela della sicurezza dell’Utente, i dati di contatto del medesimo risultino non aggiornati e quindi lo rendano irreperibile di fronte ad eventuali richieste da parte dell’Autorità Giudiziaria.
    mzanella likes this.

  13. #13
    Guest

    Predefinito

    Ho omesso di loggarmi per piu di 3 anni. Han ragione, e la mail di avviso mi è sfuggita, poi la cerco.

Tags for this Thread

Regole di scrittura

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