PDA

View Full Version : INVIARE EMAIL DAL PROPRIO SITO


fabiolore
08-05-2012, 11:48
Ciao a tutti ragazzi . Io ho un form sul mio sito per poter inviare messaggi direttamente sulla mia mail. Il form è il seguente

<form action="" id="contacts-form">
<fieldset>
<div class="rowElem">
<input type="text" value="Nome:" onFocus="if(this.value=='Name:'){this.value=''}" onBlur="if(this.value==''){this.value='Name:'}" >
</div>
<div class="rowElem">
<input type="email" value="E-mail:" onFocus="if(this.value=='E-mail:'){this.value=''}" onBlur="if(this.value==''){this.value='E-mail:'}" >
</div>
<div>
<textarea cols="1" rows="1" onFocus="if(this.value=='Message:'){this.value=''}" onBlur="if(this.value==''){this.value='Message:'}" >Messaggio:</textarea>
</div>
<div class="link alignright"><a href="#" onClick="document.getElementById('contacts-form').reset()">Cancella</a> &nbsp; &nbsp; <a href="#">Invia</a><a href="#" onClick="document.getElementById('contacts-form').submit()"></a></div>
</fieldset>
</form>
</div>

Avendo comprato un sito gia pronto questo è stato gia creato e adattato per la mia pagina. Ora vorrei configurarlo in modo tale che funzioni con la mia mail . Ho visto un p di guide su internet ma non ci ho capito molto ho solo capito che devo creare un'altra pagina chiamata mail.php in cui c'è un codice che mi fa funzionare il tasto invio . Qualcuno mi può guidare passo passo per la configurazione e il completo funzionamento del form?

Grazie Fabio

Mettiu_
08-05-2012, 14:55
Ciao, intanto la form andrebbe modificata così (piccola pagina di esempio):

<html>
<head>
<title>Invia mail</title>
</head>
<body>

<form action="send_mail.php" id="contacts-form" method="post">
<fieldset>
<div class="rowElem">
<input type="text" name="nome" value="Nome:" onFocus="if(this.value=='Nome:'){this.value=''}" onBlur="if(this.value==''){this.value='Nome:'}" >
</div>
<div class="rowElem">
<input type="email" name="email" value="E-mail:" onFocus="if(this.value=='E-mail:'){this.value=''}" onBlur="if(this.value==''){this.value='E-mail:'}" >
</div>
<div>
<textarea cols="10" rows="10" name="messaggio" onFocus="if(this.value=='Messaggio:'){this.value=''}" onBlur="if(this.value==''){this.value='Messaggio:'}" >Messaggio:</textarea>
</div>
<div class="link alignright"><a href="#" onClick="document.getElementById('contacts-form').reset()">Cancella</a> &nbsp; &nbsp; <a href="#" onClick="document.getElementById('contacts-form').submit()">Invia</a></div>
</fieldset>
</form>

</body>
</html>


Poi devi predisporre una pagina di nome 'send_mail.php' fatta più o meno così:

<html>
<head>
<title>Invio mail</title>
</head>
<body>

<?
echo "<h1>Spedizione mail</h1>";
if(isset($_POST['messaggio']) && isset($_POST['email']) && isset($_POST['nome']))
{
$mittente = 'From: "'.$_POST['nome'].'" <'.$_POST['email'].'>'."\r\n";
$reply = "Reply-to: ".$_POST['email']."\r\n";

/* Qui puoi personalizzare l'oggetto della mail */
$oggetto = "Oggetto della mail";

/* Qui puoi personalizzare l'inizio della mail */
$messaggio = "Mail automatica dal sito xxx-yyy-zzz: ";

$messaggio = $messaggio.$_POST['messaggio'];

/* Qui devi inserire l'indirizzo mail cui devono arrivare le mail */
$destinatario = "[email protected]";

if(mail($destinatario, $oggetto, $messaggio, $mittente.$reply))
echo "<p>Email inviata a " . $destinatario."</p>";
else
echo "<p>Invio mail fallito</p>";
}
else
{
echo "<p>Errore nei parametri: impossibile inviare la mail.</p>";
}

?>

</body>
</html>


Modifica i parametri dove necessario (segui i commenti che ci sono nel codice). Ovviamente è solo un esempio, funzionante ma solo un esempio. Puoi arricchirlo e irrobustirlo a piacere.
Ciao

P.S. Quando posti, indenta il codice con gli opportuni tag... E' più leggibile :)

fabiolore
08-05-2012, 15:48
Grazie per avermi risposto , nel tanto invia che devo impostare ? O mi basta copiare quello che hai scritto te e creare la pagina send_mail.php

Mettiu_
08-05-2012, 16:41
Grazie per avermi risposto , nel tanto invia che devo impostare ? O mi basta copiare quello che hai scritto te e creare la pagina send_mail.php

Ti basta copiare quello che ho scritto io, sia per la form sia per la pagina send_mail.php. Una volta che funziona, lo complichi a piacere in base al risultato che vuoi ottenere.

fabiolore
08-05-2012, 21:30
Ciao , allora io ho copiato la pagina send_mail.php e adattato al mio form che purtroppo non posso modificare data l'impaginazione particolare . ti allego il mio form attuale e la pagina send_mail.php che ho creato dimmi dove sbaglio dato che appena provo ad inviare la mail mi si apre una pagina che se vado a vedere il link è quella creata send_mail.php e mi scrive su schermata tutta bianca Spedizione Email in grassetto e sotto la scritta Errore nei parametri: impossibile inviare la mail.

Puoi dirmi gentilmente dove sbaglio e come modificare per far si che mi funzioni perfettamente

<form action="send_mail.php" id="contacts-form" method="post">
<fieldset>
<div class="rowElem">
<input type="text" value="Nome:" onFocus="if(this.value=='Name:'){this.value=''}" onBlur="if(this.value==''){this.value='Name:'}" >
</div>
<div class="rowElem">
<input type="email" value="E-mail:" onFocus="if(this.value=='E-mail:'){this.value=''}" onBlur="if(this.value==''){this.value='E-mail:'}" >
</div>
<div>
<textarea cols="1" rows="1" onFocus="if(this.value=='Message:'){this.value=''}" onBlur="if(this.value==''){this.value='Message:'}" >Messaggio:</textarea>
</div>
<div class="link alignright"><a href="#" onClick="document.getElementById('contacts-form').reset()">Cancella</a> &nbsp; &nbsp; <a href="#" onClick="document.getElementById('contacts-form').submit()">Invia</a></div> </fieldset>
</form>



e questa è la pagina send_mail.php

<html>
<head>
<title>Invio mail</title>
</head>
<body>

<?
echo "<h1>Spedizione mail</h1>";
if(isset($_POST['messaggio']) && isset($_POST['email']) && isset($_POST['nome']))
{
$mittente = 'From: "'.$_POST['nome'].'" <'.$_POST['email'].'>'."\r\n";
$reply = "Reply-to: ".$_POST['email']."\r\n";

/* Qui puoi personalizzare l'oggetto della mail */
$oggetto = "Oggetto della mail";

/* Qui puoi personalizzare l'inizio della mail */
$messaggio = "Mail automatica dal sito xxx-yyy-zzz: ";

$messaggio = $messaggio.$_POST['messaggio'];

/* Qui devi inserire l'indirizzo mail cui devono arrivare le mail */
$destinatario = "[email protected]";

if(mail($destinatario, $oggetto, $messaggio, $mittente.$reply))
echo "<p>Email inviata a " . $destinatario."</p>";
else
echo "<p>Invio mail fallito</p>";
}
else
{
echo "<p>Errore nei parametri: impossibile inviare la mail.</p>";
}

?>

</body>
</html>


Grazie Fabio

Mettiu_
08-05-2012, 22:38
Se confronti il codice della tua form col codice che ti ho postato io noti la differenza (che poi è anche quella che genera il problema). I tag <input> nel tuo caso non hanno l'attributo name correttamente settato (anzi è proprio assente) quindi chiamare $_POST['messaggio'] non ha nessun senso perchè quello che mettiamo tra parentesi quadre è il valore dell'attributo in questione... Per risolvere il problema quei tag devono avere il name settato per bene.

fabiolore
09-05-2012, 09:53
Quindi puoi adattarmi il form senza modificarne la forma e le dimensioni per farlo funzionare con il codice php che mi hai dato

Mettiu_
09-05-2012, 10:20
Quindi puoi adattarmi il form senza modificarne la forma e le dimensioni per farlo funzionare con il codice php che mi hai dato

Ma l'ho già fatto nel mio primo messaggio!!! Quel codice della form che ti ho postato è funzionante: devi solo fare copia-incolla!

fabiolore
09-05-2012, 10:34
Si ti ringrazio ma poi mi si spagina tutto e non so come reimpaginarlo se copio il tuo form a psoto di quello che ho

Mettiu_
09-05-2012, 10:39
Si ti ringrazio ma poi mi si spagina tutto e non so come reimpaginarlo se copio il tuo form a psoto di quello che ho

Mi sono appena accorto che c'era una chiusura del tag </div> di troppo nel mio codice... Forse era quello il motivo per cui avevi problemi di impaginazione! Riprova un pò (ho modificato il codice nel primo post).

fabiolore
09-05-2012, 10:51
Grazie mille ora funziona tutto