Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1

    Problema con funzione mail()

    Ho bisogno di far girare questo file in un pc per la mia azienda.
    Ho fatto questo semplice script per inserire i dati dell'utente che si sta per iscrivere ad un semplice form, in una pagina html. Non mi serviva inserirli in un db MySQL e quindi per comodità ho utilizzato questa forma. Sicuramente noterete il fatto che i campi che controlla che non siano vuoti sono di meno rispetto a tutti quelli esistenti.. Il motivo è spiegato nei commenti all'interno del programma.
    Fino a quando stavo inserendo i dati in una semplice pagina html andava tutto liscio. Però un mio collega mi ha chiesto di inviare direttamente un'e-mail a quello che si sta per iscrivere e quindi lo script finale sarà:
    Codice PHP:
    <?php

    //variabili
    $db "dati.html";
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $email $_POST['email'];
    $telefono $_POST['telefono'];
    $indirizzo $_POST['indirizzo'];
    $cap $_POST['cap'];
    $citta $_POST['citta'];

    //variabili per email in html
    //oggetto
    $oggetto ="Iscrizione al servizio email Mia Società";

    //body
    $mailbody "Messaggio in html";

    //intestazioni html
    $mailhtml "MIME-Version: 1.0
    "
    ;
    $mailhtml .= "Content-type: text/html; charset=iso-8859-1
    "
    ;
    $mailhtml .= "From: Mia Società";

    /*
    1. condizione: variabili, quelle fondamentali, diverse da ' '
    2. apre il db, scrive i dati (separandoli da quelli precedenti con una serie di trattini)
    3. Manda un'email all'utente
    4. chiude il db
    5. stampa un messaggio di ringraziamento reindirizzandoli dopo 5 sec alla pagina precedente
    */
    if ($nome != '' AND $cognome !='' AND $email != '' AND $cap != '' AND $citta != '') {
    $fp=fopen($db,"a+");
    fwrite($fp

    -------- ' 


    Nome: ' 
    $nome 
    Cognome: ' 
    $cognome 
    E-mail: ' 
    $email 
    Telefono: ' 
    $telefono 
    Indirizzo: ' 
    $indirizzo 
    CAP: ' 
    $cap 
    Città: ' 
    $citta) or die('Errore nella scrittura del file');
    mail($email$oggetto$mailbody$mailhtml);
    fclose($fp);
    echo 
    "Grazie per l'iscrizione. 
    Le abbiamo inviato un'email.
    <meta http-equiv='refresh' content='5;URL=index.htm'>"
    ;
    }

    //se le variabili fondamentali sono vuote stampa un messaggio di errore reindirizzando l'utente (dopo 3 sec) alla pagina iniziale
    else {
    echo 
    "Errore nel form, probabilmente ha lasciato qualche spazio bianco.


    Tra pochi secondi sarà reindirizzato alla prima pagina per Ritentare l'iscrizione.<meta http-equiv='refresh' content='3;URL=index.htm'>"
    ;

    ?>
    Quando vado a provare il programma però mi da errore sulla riga sulla quale si trova la funzione mail().
    Cosa sbaglio??

    Grazie a tutti

    Steave

  2. #2
    Bho, non riesco a capire è tutto giusto, magari c'è un interferenza con il file aperto, prova prima a chiuderlo poi ad inviare la mail..non saprei ti giuro
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  3. #3
    Niente da fare Qualche altra idea?

  4. #4
    Magari, fa interferenza con il content-type =( Puoi postarmi l'errore che ti da?
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  5. #5
    Utilizzo wamp per far girare le pagine in locale.. L'errore è questo:

    ( ! ) Warning: mail() [function.mail]: Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\wamp\www\pag.php on line 37
    Call Stack
    # Time Memory Function Location
    1 0.0114 686744 {main}( ) ..\pag.php:0
    2 0.0120 689160 mail ( ) ..\pag.php:37

    A quanto pare non riesce ad inviare l'email per qualche problema con la porta.. però non riesco a capire quale sia!!

  6. #6
    Bhe fin qui ci siamo, è un problema di locale, anche perchè io ho fatto così su mio server:

    Codice PHP:
    <?
    $db 
    "dati.html";
    $nome "davide";
    $cognome "cirillo";
    $email "ciri94@hotmail.it";
    $cap"20020";
    $citta="lainate";

    $oggetto ="Iscrizione al servizio email Mia Società";

    //body
    $mailbody "Messaggio in html";

    //intestazioni html
    $mailhtml "MIME-Version: 1.0
    "
    ;
    $mailhtml .= "Content-type: text/html; charset=iso-8859-1
    "
    ;
    $mailhtml .= "From: Mia Società";

    if (
    $nome != '' AND $cognome !='' AND $email != '' AND $cap != '' AND $citta != '') {
    $fp=fopen($db,"a+");
    fwrite($fp

    -------- ' 


    Nome: ' 
    $nome 
    Cognome: ' 
    $cognome 
    E-mail: ' 
    $email 
    Telefono: ' 
    $telefono 
    Indirizzo: ' 
    $indirizzo 
    CAP: ' 
    $cap 
    Città: ' 
    $citta) or die('Errore nella scrittura del file');
    mail($email$oggetto$mailbody$mailhtml);
    fclose($fp);
    echo 
    "Grazie per l'iscrizione. 
    Le abbiamo inviato un'email.
    <meta http-equiv='refresh' content='5;URL=index.htm'>"
    ;
    }
    //se le variabili fondamentali sono vuote stampa un messaggio di errore reindirizzando l'utente (dopo 3 sec) alla pagina iniziale
    else {
    echo 
    "Errore nel form, probabilmente ha lasciato qualche spazio bianco.


    Tra pochi secondi sarà reindirizzato alla prima pagina per Ritentare l'iscrizione.<meta http-equiv='refresh' content='3;URL=index.htm'>"
    ;
    }

    ?>
    e funziona, quindi è un problema tuo non del codice =) (mi sembrava strano!)
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  7. #7
    E quindi ora cosa posso fare per risolvere questo problema??

  8. #8
    Dice di andare in php.ini e settare qualcosa, ma io non sò aiutarti sinceramente, scusami! Aspetta qualcuno.. =(

    Hai provato in ufficio da te?? li funziona??

    un'altra prova, prova a fare un pagina php con l'invio di una mail, se ti da lo stesso errore niente aspetta!

    CIAO
    Che mondo sarebbe senza Nutella.

    PHP/MYSQL/HTML/CSS/JAVASCRIPT

  9. #9
    Utente di HTML.it L'avatar di Razorblade
    Registrato dal
    Feb 2002
    Messaggi
    1,308
    Ciao,
    per inviare email dal tuo pc locale ( presupponendo che questo sia connesso ad internet ) puoi usare fake sendmail per windows, nell'articolo del link ho spiegato molto brevemente come fare.

    Ciao

  10. #10
    Ora provo
    grazie a tutti e 2

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