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

    Problemi con la funzione mail

    Ciao a tutti,
    premetto che non sono granché esperto nell'uso del PHP, sono alle prese con un
    problema che non riesco a risolvere con l'uso della funzione mail.

    In un mio sito ho creato delle pagine contenenti dei test, che rmandano a pagine php che generano a video l'esito. Fin qui tutto bene.

    Volendo che, in aggiunta, i risultati e le risposte mi arrivino per email, ho aggiunto queste righe:

    -----------------------------------------------------------
    $to = "mioindirizzo@miosito";
    $subject = "Risultati del test n.21";

    $body = "Test n. 21\n\n\nRisultati di $nome $cognome\n\nPunteggio: $totale su 30\n\n
    L'esito delle singole risposte è il seguente
    (3 punti per la risposta esatta, -1 per la risposta errata, 0 per la risposta non fornita):
    Risposta 1 = $dom1
    Risposta 2 = $dom2
    Risposta 3 = $dom3
    Risposta 4 = $dom4
    Risposta 5 = $dom5
    Risposta 6 = $dom6
    Risposta 7 = $dom7
    Risposta 8 = $dom8
    Risposta 9 = $dom9
    Risposta 10 = $dom10";

    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";

    mail ($to, $subject, $body, $headers);

    if(mail($to, $subject, $body, $headers)) { echo "OK"; } else { echo "Non inviata"; }
    -----------------------------------------------------------

    Succede che l'email non viene inviata, il resto dellos script funziona.
    Ho provato a trasferire le pagine su un altro server, e li' funziona tutto.
    Credo in questo forum di non poter fare i nomi dei fornitori del servizio, poiche' sono entrambi hosting a pagamento.
    Qualcuno mi sa dire in cosa potrei aver sbagliato?
    Vi ringrazio,
    Martino

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    da un po' consiglio la classe phpmailer, fa a suo dovere il compito e l'uso è molto semplice, prova a guardare

    http://phpmailer.sourceforge.net/tutorial.html#2

    ciao

  3. #3
    nn vedo nulla di errato apparte il fatto che l'email la invii due volte una normalmente e l'altra mentre fai il controllo
    Codice PHP:
    mail ($to$subject$body$headers);

    if(
    mail($to$subject$body$headers)) { echo "OK"; } else { echo "Non inviata"; } 
    cancella quella singola e rimani quella nella condizione...poi se lo script funziona su un'altro server significa che nn è tanto un problema dello script ma del server che nn invia email tramite script php ti consiglio di contattare hosting per avere maggiori informazioni a riguardo


  4. #4
    anche con lo zend framework inviare una mail è la cosa più semplice di questo mondo:

    Codice PHP:

    <?php
    require_once 'Zend/Mail.php';
    $mail = new Zend_Mail();
    $mail->setBodyText('This is the text of the mail.');
    $mail->setFrom('somebody@example.com''Some Sender');
    $mail->addTo('somebody_else@example.com''Some Recipient');
    $mail->setSubject('TestSubject');
    $mail->send();
    ?>

  5. #5
    probabilmente sono gli header che rompono
    prova a levarli e fai una prova

  6. #6
    Ringrazio tutti per la sollecitudine con cui mi avete aiutato.
    Il problema e' piu' o meno risolto, ho utilizzato phpmailer. L'assistenza, che avevo gia' interpellato, invece, non mi ha ancora dato risposta.

    Ho inserito il seguente codice:

    require("phpmailer/class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = "smtp.(il mio fornitore).it";
    $mail->From = "(un mio indirizzo)";
    $mail->AddAddress("(altro mio indirizzo)");

    $mail->Subject = "Risultati del test n.21";
    $mail->Body = "Test n. 21 etc. etc.";
    $mail->WordWrap = 50;

    if(!$mail->Send())
    {
    echo "Arrivederci al prossimo test";

    }
    else
    {
    echo "Grazie per aver svolto il test";
    }

    e qui ho chiuso il php.

    La stranezza e' questa: mi compare il messaggio che indicherebbe che l'email non e' stata inviata (quello della variabile else), invece l'email viene inviata correttamente.
    Immagino che dovrei inserire un argomento tra le parentesi in if(!$mail->Send()), e' giusto?

    Per l'installazione ho copiato la directory phpmailer come subdirectory di quella in cui si trovano i test. Questo perche' non riesco ad accedere alle directory di sistema ne' via ftp ne' tramite il pannello di controllo del fornitore.

    Ringrazio ancora tutti per i consigli (a proposito, ho provato anche ZendMail, ma stranamente invece di ottenere l'esecuzione del codice ricevevo un invito a scaricare o eseguire il file php... alla fine mi sono arreso).

    Martino

  7. #7
    Scusate,
    ho scritto una cosa veramente stupida.
    Phpmailer ha funzionato perfettamente, e il messaggio che viene visualizzato e' proprio quello che indica che l'email e' stata inoltrata.
    Grazie ancora,
    Martino

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 © 2024 vBulletin Solutions, Inc. All rights reserved.