Visualizzazione risultati 1 fino 13 di 13

Discussione: Funzione mail() con strano comportamento.

  1. #1
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito Funzione mail() con strano comportamento.

    Salve,

    sto cercando di capire il perchè un mio script che invoca la funzione mail() funzioni su alcuni indirizzi mail mentre su altri non ne vuole proprio sapere.

    la funzione è la seguente:
    Codice PHP:
    function invia_mail($PresMail) {
    $TestoHtml = "<p>.....</p>";
    $mail_to .= "<$PresMail>";
    $mail_from = 'Mittente';
    $mail_subject = "Ecco una mail";
    $mail_body = "<p><font color=#000000>$TestoHtml</font></p>";
    // Intestazioni HTML
    $mail_in_html = "MIME-Version: 1.0\r\n";
    $mail_in_html .= "Content-type: text/html; charset=iso-8859-1\r\n";
    $mail_in_html .= "From: <$mail_from>";
    // Processo di invio
    //mail($mail_to, $mail_subject, $mail_body, $mail_in_html);
    // INVIO DELLA MAIL
    if(@mail($mail_to, $mail_subject, $mail_body, $mail_in_html)) { // SE L'INVIO È ANDATO A BUON FINE...
    echo "La mail è stata inoltrata con successo.";
    } else {
    // ALTRIMENTI...
    echo "Si sono verificati dei problemi nell'invio della mail.";
    }
    }
    Non capisco dove sto sbagliando, se testo questo script con un mail server in locale funziona tutto correttamente ma richiamato e lanciato dal mio spazio altervista per alcuni indirizzi non spedisce la mail.

    Avete qualche indicazioni da darmi?

    Grazie

  2. #2
    Guest

    Predefinito

    Perchè in mail to hai il punto prima di valorizzarla?

    Scrivi così:
    Codice PHP:
    $mail_to = "<$PresMail>";

  3. #3
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Perchè in mail to hai il punto prima di valorizzarla?

    Scrivi così:
    Codice PHP:
    $mail_to = "<$PresMail>";
    Perchè se non erro, è una forma contratta:

    Codice PHP:
    $mail_to .= "<$PresMail>";
    equivale a

    Codice PHP:
    $mail_to = $mail_to ."<$PresMail>";

  4. #4
    Guest

    Predefinito

    Si, ma prima non hai nessuna variabile chiamato così, quindi che senso ha?

  5. #5
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Si, ma prima non hai nessuna variabile chiamato così, quindi che senso ha?
    Nessuno :)

    Sono un hobbista probabilmente leggendo di qua e di la... alcune variabili mi sono rimaste così.

    Pensi possa essere quello il problema? (ripeto che in locale funziona tutto correttamente).

  6. #6
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    Citazione Originalmente inviato da puz740 Visualizza messaggio
    Nessuno :)

    Sono un hobbista probabilmente leggendo di qua e di la... alcune variabili mi sono rimaste così.

    Pensi possa essere quello il problema? (ripeto che in locale funziona tutto correttamente).
    se mail_to è una variabile locale alla funzione non dovrebbe essere quello il problema dato che la variabile viene inizializzata in quel punto, quindi praticamente tu non concateni nulla.

    l e-mail vengono inviate tramite un ciclo? se non erro dovresti cercare di temporizzare l'invio di ogni email di un paio di secondo l'una dall'altra.
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  7. #7
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito

    Citazione Originalmente inviato da Xsescott Visualizza messaggio
    se mail_to è una variabile locale alla funzione non dovrebbe essere quello il problema dato che la variabile viene inizializzata in quel punto, quindi praticamente tu non concateni nulla.

    l e-mail vengono inviate tramite un ciclo? se non erro dovresti cercare di temporizzare l'invio di ogni email di un paio di secondo l'una dall'altra.
    Non vengono inviate più mail, ma una al massimo.

  8. #8
    Guest

    Predefinito

    Perchè inserisci la @ davanti ad mail()? Eliminalo, poi ricorda che puoi mandare un tot di email ogni secondo, quindi dovresti mettere lo script in un ciclo che alla fine ha la funzione sleep().

    PS: Se si "accoda" la variabile anche se è la prima, questo genera un Notice. In ogni caso è un errore, non importante, ma lo è. Chiaramente nella funzione è sbagliato, perchè non ha un global $mail_to; quindi fa pensare non abbia prima della funzione una variabile con lo stesso nome.

  9. #9
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Perchè inserisci la @ davanti ad mail()? Eliminalo, poi ricorda che puoi mandare un tot di email ogni secondo, quindi dovresti mettere lo script in un ciclo che alla fine ha la funzione sleep().

    PS: Se si "accoda" la variabile anche se è la prima, questo genera un Notice. In ogni caso è un errore, non importante, ma lo è. Chiaramente nella funzione è sbagliato, perchè non ha un global $mail_to; quindi fa pensare non abbia prima della funzione una variabile con lo stesso nome.
    Scusa, sono abbastanza novello in php e non credo d'aver capito bene, potresti dirmi, come modificheresti quel codice? Semplicemente togliendo quel . davanti all'uguale o in che altro modo?

  10. #10
    Guest

    Predefinito

    Codice PHP:
    function invia_mail($PresMail)
    {
    $TestoHtml = "<p>.....</p>";
    $mail_to .= '<' . $PresMail . '>';
    $mail_from = 'Mittente';
    $mail_subject = 'Ecco una mail';
    $mail_body = '<p style="color: #000000;">' . $TestoHtml . '</p>';

    $mail_in_html = 'MIME-Version: 1.0' . "\r\n";
    $mail_in_html .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $mail_in_html .= 'From: <' . $mail_from . '>';

    if(
    mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
    {
    echo
    "La mail è stata inoltrata con successo.";
    }
    else
    {
    echo
    "Si sono verificati dei problemi nell'invio della mail.";
    }
    }
    Guarda se funziona così, anche se l'email con < e > davanti mi sa che non è giusto nella funzione mail().

  11. #11
    L'avatar di Xsescott
    Xsescott non è connesso AlterGuru
    Data registrazione
    08-02-2004
    Messaggi
    1,413

    Predefinito

    togli l'opratore di concatenazione .= (lascia solo =) e anche i simboli < e >.
    Ultima modifica di Xsescott : 03-10-2009 alle ore 01.50.09
    "Quando il potere dell'amore supererà l'amore per il potere il mondo conoscerà la pace" Jimmy Hendrix


    [ Richiesta: http://www.unibologna.eu/ ] --> [Risposta: http://www.magazine.unibo.it/Magazin...al_Portale.htm Morale] -->[ http://www.anti-phishing.it/news/art...s.13062007.php ]
    consoliwebsite.altervista.org

  12. #12
    puz740 non è connesso Utente giovane
    Data registrazione
    15-09-2004
    Messaggi
    61

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Codice PHP:
    function invia_mail($PresMail)
    {
    $TestoHtml = "<p>.....</p>";
    $mail_to .= '<' . $PresMail . '>';
    $mail_from = 'Mittente';
    $mail_subject = 'Ecco una mail';
    $mail_body = '<p style="color: #000000;">' . $TestoHtml . '</p>';

    $mail_in_html = 'MIME-Version: 1.0' . "\r\n";
    $mail_in_html .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $mail_in_html .= 'From: <' . $mail_from . '>';

    if(
    mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
    {
    echo
    "La mail è stata inoltrata con successo.";
    }
    else
    {
    echo
    "Si sono verificati dei problemi nell'invio della mail.";
    }
    }
    Guarda se funziona così, anche se l'email con < e > davanti mi sa che non è giusto nella funzione mail().
    Grazie, provo nel weekend e ti faccio sapere.

  13. #13
    Guest

    Predefinito

    Correggi, ho dimenticato di eliminare il punto

    Codice PHP:
    function invia_mail($PresMail)
    {
    $TestoHtml = "<p>.....</p>";
    $mail_to = $PresMail;
    $mail_from = 'Mittente';
    $mail_subject = 'Ecco una mail';
    $mail_body = '<p style="color: #000000;">' . $TestoHtml . '</p>';

    $mail_in_html = 'MIME-Version: 1.0' . "\r\n";
    $mail_in_html .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $mail_in_html .= 'From: <' . $mail_from . '>';

    if(
    mail($mail_to, $mail_subject, $mail_body, $mail_in_html))
    {
    echo
    "La mail è stata inoltrata con successo.";
    }
    else
    {
    echo
    "Si sono verificati dei problemi nell'invio della mail.";
    }
    }

Regole di scrittura

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