Modulo di invio mail in php

Forum per tutti i neofiti e gli esperti che vogliono proporre o rispondere ad argomenti che riguardano lo sviluppo di apllicazioni web basate in aprticolare su Html - Css - Php - MySql, ma non solo...

Moderatore: Michele

Modulo di invio mail in php

Messaggioda Michele » lun apr 03, 2006 2:15 pm

Vi posto giusto a titolo didattico, un sempicissimo e stupidissimo modulo per far inviare, dai visitatori del proprio sito una mail, senza dover utilizzare i convenzionali client di posta!

La parte fondamentale del form è la seguente:
<form action="MailSend.php" method="post">
<span>
Inserisci il tuo indirizzo em@il:
<input name="indEmail" type="text" size="35">
<br><br>
</span>
</div>
<div>
Inserisci l' oggetto della comunicazione:
<input name="oggetto" type="text" size="35">
<br><br>
</div>
<div>
<textarea name="messaggio" cols="30" rows="3">Inserisci qui il messaggio</textarea>
<br><br>
<input type="submit" value="Invia"> &nbsp;&nbsp;Tutti i campi sono obbligatori!</div>
</form>


quella della pagina di invio mail è questa:
$destinatario="pippo@topolino.it"; //Sostituito questo indirizzo con l'indirizzo al quale volete che le comunicazione vengono inviate

$indEmail=$_POST['indEmail']; //Recuperiamo i campi riempiti dall'utente!!!
$oggetto=$_POST['oggetto'];
$messaggio=$_POST['messaggio'];

$pr=(strpos($indEmail, '@')); // Condizione necessaria, ma non sufficiente, per capire se quello immesso è un indirizzo email corretto, per ora ci basta questo!
//La funzione strpos ci restituisce true se all'interno dell'indirizzo email c'è il carattere '@'

//Prima di tutto "puliamo" il testo che un utente potrebbe scriver, in quanto alcuni caratteri come " e ' possono anche far fallire l'invio della mail
$indEmail=htmlspecialchars($indEmail); // La funzione htmlspecialchars converte tutti i caratteri che possono creare problemi in entità, per maggiori info o venite al corso o andate a cercare la documentazione ufficiale sul sito http:////www.php.net! :P
$oggetto=htmlspecialchars($oggetto);
$messaggio=htmlspecialchars($messaggio);

$indEmail=trim($indEmail); // Con la funzione trim leviamo possibili spazi e andate a capo che stanno all'inizio e
$oggetto=trim($oggetto); // alla fine del testo, che in molti casi vengono aggiunti per sbaglio!!!
$messaggio=trim($messaggio);

$messaggio=nl2br($messaggio); //Infine se non vogliamo che il messaggio ci arrivi scritto su un unica riga e vogliamo mantenere le
//andate a capo dell' utente utiliziamo la funzione nl2br che trasforma, i <br> in /n! Anche qui per maggiori info o venite al corso o andate a cercare la documentazione ufficiale sul sito http:////www.php.net! :P

//Ora controlliamo che i campi che ci sono arrivati dal form siano stati riempiti dall'utente
if ($indEmail == "") // Controllo se il campo dell' indirizzo email è vuoto
{
echo "Attenzione! Non hai compilato il campo email!";
}
elseif (!($pr)) // Controllo se nel campo dell' indirizzo email c'è il carattere '@'
{
echo "Attenzione! Non hai inserito un indirizzo email valido!";
}
elseif ($oggetto == "") // Controllo se il campo dell' oggetto è vuoto
{
echo "Attenzione! Non hai compilato il campo oggetto!" ;
}
elseif ($messaggio == "") // Controllo se il campo del messaggio è vuoto
{
echo "Attenzione! Non hai compilato il campo messaggio" ;
}
else
{
// Creiamo un header essenziale per la mail!: in questa maniera otteniamo che l'indirizzo di posta viene messo come mittente
// della mail che arriverà all'indirizzo $destinatario che abbiamos pecificato prima!
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/plain; charset=iso-8859-1\r\n";
$headers .= "From: " . $indEmail . "\r\n";

$invio = mail ($destinatario, $oggetto, $messaggio, $headers); // La funzione mail ci permette di invaire la mail! Salviamo l'esito della funzione in una variabile

if ($invio) // Controlliamos e l'invio ha avuto esito positivo o negativo!!!
{
echo "Ok";
}
else
{
echo "Ops";
}
}


Trovate allegati anche i documenti, sono molto scarni a livello grafico, ma in questa maniera sono molto + semplici da modificare e personalizzare!!!

In + vi ribadisco (sta scritto già sugli allegati) che per far funzionare questo script è necessario che funzioni sul serve di appoggio un server di posta in uscita, solitamente il ambiente linux il daemon che fa questo prende il nome di SendMail, ne esitono tanti altri anche se non so in ambiente windows cosa potete utilizzare!
Cmq se vi appoggiate ad un server linux con pache dovrebbe essere già tutto pronto per il funzionamento!

Spero vi ritorni utile!!! 8)
Allegati
PhpMail.rar
Contiene 2 file, uno è il docuemtno del form e l'altro è il documento invia i dati!
(2.2 KiB) Scaricato 369 volte
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am

Messaggioda Michele » sab mar 31, 2007 10:36 am

questo modulo per quanto semplice è da riternersi solo di prova, non lo mette sui siti, rappresenta un punto di partenza da modificare! :P

Ha diverse falle... :wink:

Anzi che ne pensate di farne una versione più sicura, magari continuando questo thread?
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am

Messaggioda diego crimaudo » ven ott 17, 2008 2:35 pm

grazie x l' inizio ciao
diego crimaudo
 
Messaggi: 19
Iscritto il: lun ott 13, 2008 8:05 pm

Re: Modulo di invio mail in php

Messaggioda aldus » mer nov 12, 2008 11:08 am

Cioa Michele,
io ho fatto la prova a devo dire che alcune cose mi funzionano ma l'email non la invia ancora anche se mi prompta il messaggio OK.

Innanzitutto, ho messo il codice del file MailSend.php incluso tra tag html e con apertura e scrittura php :
<html>
<
<body>
<?php
...................
..........................codice

; ?>
</body>
</html> .

il tutto su slackware 12.1 ho configurato apache col file httpd tutto ok ed il servizio funziona bene.
Ma credo che sia necessario un server di posta di uscita, perche nonstante una volta riempito tutti i campi del form, mi
dice "OK" pero poi non ho ricevuto nessuna email.

Ciao
Aldo
aldus
 
Messaggi: 37
Iscritto il: mer apr 25, 2007 2:23 pm

Re: Modulo di invio mail in php

Messaggioda Michele » gio nov 13, 2008 9:06 pm

è praticamente fondamentale avere un server di uscita, su slck mi sembra che di default ci sia sendmail, anche se dopo aver avuto un po' di problemi ho installato postfix!
Per la configurazione internet è pieno... :P
Se stai facendo il corso di linux in questa sessione a breve penso che vi toccherà studiarlo! :mrgreen:
Michele
 
Messaggi: 308
Iscritto il: ven mar 17, 2006 2:14 am


Torna a Webmaster

Chi c’è in linea

Visitano il forum: Nessuno e 2 ospiti

cron