Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085

    invio mail da server 'in locale' .. possibile ?

    Ciao,
    adesso sparo una bestemmia ..

    non ho la più pallida idea del princio dell'invio di una mail, ma chiedo ..
    è possibile con php inviare una mail, da una procedura che gira in un server di una rete interna ? (apache)

    chiaramente mentre si è connessi ad internet

    ho fatto una prova con una pagina trovata in rete, ma mi dà il seguente errore:

    variabile non trovata: HTTP_SERVER_VARS

    Grazie

  2. #2
    Che test hai fatto?

    per far funzionare la funzione mail() da locale devi settare i seguenti parametri nel php.ini:

    - SMTP (ho impostato out.alice.it)
    - smtp_port (ho impostato 25 ma alcuni richiedono 465)
    - sendmail_from (quel_che_ti_pare@quel_che_ti_pare.it).

    Testato su xampp e funziona...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    questa è la pagina che ho provato:

    Codice PHP:
    <?php
    $email
    =$_POST['email'];

    #######################################
    #     IMPOSTAZIONI DA CONFIGURARE     #
    #######################################

    //(1) indirizzo email del destinatario del modulo
    $destinatario "atos_atos70@gmail.com";

    //(2) indirizzo email del mittente, campo FROM
    //    non toccare se desiderate che l'indirizzo email inserito nel modulo sia
    //    riportato nel campo DA del messaggio che sarà ricevuto.
    //    Se invece desiderate un campo fisso annullare la prima riga e abilitare
    //    la seconda inserendo la dicitura desiderata (per annullare mettere //
    //    all'inizio della prima riga e per abilitare togliere // dalla seconda riga)
    $nome_mittente "$email";
    // $nome_mittente = "Dal Modulo";

    //(3) oggetto del messaggio
    $oggetto_email "Modulo inviato dal sito ....";

    //(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y".
    //    (valori possibili: "y" e "n")
    $all_free "n";

    //(5) se avete messo "n" al punto (4) inserire tra virgolette, separati
    //    da virgola, i nomi dei campi da rendere OBBLIGATORI
    //    Esempio: $campi_req = array("nome","telefono","via");
    $campi_req = array("nome","email");

    //(6) controllo validità del campo email. (valori possibili: "y" e "n")
    $obbligo_email "y";

    //(7) obbligare l'utente ad accettare le condizioni.
    //    (valori possibili: "y" e "n")
    $accetta_condizioni "n";

    //(8) URL della pagina di ringraziamento
    $pagina_grazie "http://www.aleanto.it/mailok.htm";

    //(9) URL della pagina errore campi vuoti
    $pagina_error_empty "http://www.aleanto.it/errempty.htm";

    //(10) URL della pagina errore email
    $pagina_error_email "http://www.aleanto.it/errmail.htm";

    //(11) URL della pagina errore condizioni non accettate
    $pagina_error_condizioni "http://www.aleanto.it/errempty.htm";

    //(12) URL della pagina errore invio non autorizzato (mancanza di referer)
    $pagina_error_referer "http://www.aleanto.it/errempty.htm";

    #######################################
    #  FINE IMPOSTAZIONI DA CONFIGURARE   #
    #######################################

    //ora e data
    $ora date ("H:i:s"); 
    $data date ("d/m/Y");

    //intestazione email che arriva al destinatario
    $corpo "
    Modulo inviato il 
    $data alle ore $ora
    Riepilogo dati:\n\n"
    ;

    //============== NON TOCCARE NULLA OLTRE QUESTA RIGA ==================\


    ########### CODICI ###########

    //variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori
    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER$HTTP_SERVER_VARS))){  
    $_POST = &$HTTP_POST_VARS
    }

    //prende IP ADDRESS
    if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
        
        if (
    $_SERVER["HTTP_X_FORWARDED_FOR"] == "") {

    $ipnumb getenv("REMOTE_ADDR");

            }else {

    $ipnumb getenv("HTTP_X_FORWARDED_FOR");

                }

            } else {

    $ipnumb getenv("REMOTE_ADDR");
            }
    ###################################

    //controllo referer
    if(empty($_SERVER["HTTP_REFERER"])){

        
    header ("Location: $pagina_error_referer");
        exit();
        
        }

    ########### CONTROLLO DEI CAMPI ###########
    $control_campi 0;

    if(
    $all_free != "y"){

        foreach(
    $_POST as $key => $valore){

            if(
    in_array($key,$campi_req)){

                if(
    trim($valore) == ""){

                
    $control_campi++;
                
                                        } 

                                    }

                                }

                            } else {

                
    $control_campi 0;    

                                    }                    

    ########### CONTROLLO EMAIL ###########
    $control_email 0;

    if(
    $obbligo_email == "y"){

        if(isset(
    $_POST['email'])){

            if(!
    eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$"$_POST['email'])){

            
    $control_email++;

                                }

                            } else {

            
    $control_email 0;

                                }

                            }

    ########### CONTROLLO CONDIZIONI ###########
    $control_condizioni 0;

    if(
    $accetta_condizioni == "y"){

        if(isset(
    $_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){

            
    $control_condizioni 0;

                } else {

            
    $control_condizioni ++;

                }

            }

    ########### INVIO EMAIL ###########
    if($control_campi == 0){

            if(
    $control_email == 0){

                if(
    $control_condizioni == 0){

    foreach(
    $_POST as $key => $valore){

    $key ucfirst(stripslashes(trim($key)));
    $valore stripslashes(trim($valore));
    $key str_replace("_"," ",$key);

                if(
    trim($valore) == ""$valore "Non compilato";
                
                    
    $corpo .= $key .": "$valore ."\n\n";

                }
                
                    
    $corpo .= "Numero IP: $ipnumb"."\n";

    $corpo .= "____________________________________________________________ \n\n

    "
    ;

        
    // invio e-mail
    // Header Mail
    $headmail.="From: $nome_mittente <$nome_mittente>\n";
    $headmail.="Return-Path: $nome_mittente\n";
    $headmail.="User-Agent: Php Mail Function\n";
    $headmail.="X-Accept-Language: en-us, en\n";
    $headmail.="MIME-Version: 1.0\n";
    $headmail.="X-Priority: 1 (Highest)\n";
    $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
    $headmail.="Content-Transfer-Encoding: 7bit\n";

    ini_set('sendmail_from'"$destinatario");
    mail("$destinatario""$oggetto_email""$corpo""$headmail");

                    
    header ("Location: $pagina_grazie");

                                    } else {

                    
    header ("Location: $pagina_error_condizioni");

                                }

                            } else {

                    
    header ("Location: $pagina_error_email");

                            }

                        } else {

                        
                    
    header ("Location: $pagina_error_empty");

                        }

    ?>

  4. #4
    Anzitutto verifica che ma funzione mail() funziona creando un file test.php
    Codice PHP:
    <?php
    if(!mail('tuaemail@email.it''email test''testo email....')){
    echo 
    'Fuonziona mail non funzionante'
    }
    else{
    echo 
    'email inviata';
    }
    ?>
    Punta al file test.php e verifica se l'email arriva all'indirizzo indicato significa che la funzione mail funziona...
    Se la funzione mail() ti funziona magari ti dò una dritta su come correggere lo script

    -------------------------------------
    Lo script che hai postato trovo che sia un bel pò datato...
    eregi è deprecata e il controllo sull'esistenza di $_POST lo trovo oramai superfluo (php inferiore al 4.2??!)...
    e poi non mi piacciono quei foreach per verificare i campi obbligatori...
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    Ho fatto la prova del test ..

    ah .. il file .ini l'ho modificato così:

    codice:
    [mail function]                          
    ; For Win32 only.                        
    ; http://php.net/smtp                    
    SMTP = smtp.gmail.com                    
    ; http://php.net/smtp-port               
    smtp_port = 25                           
                                             
    ; For Win32 only.                        
    ; http://php.net/sendmail-from           
    ;sendmail_from = neck.neck70@gmail.com
    risultato:

    Warning: mail() [function.mail]: "sendmail_from" not set in php.ini or custom "From:" header missing in ... percorso file php

  6. #6
    con gmail la porta è la 465 (ssl)
    http://www.miniscript.it
    Se ti sono stato di aiuto in qualche modo in questo forum iscriviti alla fan page di Miniscript - il mio blog di programmazione web.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    messo '465' sulla porta .. ma il risultato è lo stesso ..

    vedi sopra (ho modificato la risposta di prima)

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2009
    Messaggi
    1,085
    sono un pirla .. mi sono accorto di anon aver tolto il punto e virgola da 'sendmail_from'

    a stò punto ..

    con smtp_port 25 mi dà il seguente errore:

    Failed to connect to mailserver at "smtp.gmail.com" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set()

    con smtp_port 465 la pagina rimane in elaborazione senza 'far niente' !

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.