PDA

View Full Version : Form E-mail (PHP)


Dheavy
19-06-2007, 15:38
Salve ragazzi.

Cerco di creare un Form E-mail in php (il provider è www.extremis.it).
Andando sull'area SUPPORTO SOFTWARE -> Form E-mail, mi trovo la soluzione su come creare questo benedetto modulo che mi fa sclerare da giorni. Le ho provate tutte e adesso mi sono cimentato su quanto mi raccomando il provider.

Non mi da nessun errore, mi dice sempre che l'e-mail è stata inviata, ma non arriva NULLA nella mia casella di posta.

Dedicandomi a quanto segue:

modulo.htm

<form method="post" action="invio.php">
<input type="text" name="email">
<input type="text" name="nome">
<input type="text" name="oggetto">
<textarea name="testo"></textarea>
<input type="hidden" name="to">
<input type="submit" value="Invia e-mail!">
</form>

invio.php
<?
mail ( $email, $oggetto, $testo, $nome )
?>

Questi sono i due documenti creati per l'invio dell'e-mail direttamente dal web.
Mi sono subito accorto che non sapevo dove mettere l'indirizzo e-mail dove destinare l'e-mail compilata dai miei clienti. Allora ho aggiunto nel file invio.php

<?
$indirizzo="il_mioindirizzo@alice.it";
{
mail ( $email, $oggetto, $testo, $nome )
?>

E adesso mi da errore. Insomma... prima l'avevo fatto io, mi diceva sempre che l'inviava e non mi arriva mai nulla, adesso ho provato a seguire la guida del provider e mi sono perso.

Per favore, aiutatemi; grazie anticipatamente!

andbin
19-06-2007, 15:55
invio.php
<?
mail ( $email, $oggetto, $testo, $nome )
?>No no, mail() non è da usare così!!!

Vedi <qui> (http://it.php.net/manual/en/function.mail.php) sul manuale.

C'è un mio esempio in <questo> (http://www.hwupgrade.it/forum/showthread.php?t=1381561) thread. Non era per un form di email generico ma era "specializzato" per una mail preconfezionata. Ma il succo tanto è lo stesso ....

lnessuno
19-06-2007, 15:59
io ho questo scriptino:

$mittente = sicur_email($_POST["mittente"]);
$oggetto = sicur_stringa($_POST["oggetto"]);
$testo = sicur_stringa($_POST["testo"]);

if ($mittente AND $oggetto AND $testo):
mail($email, $oggetto, $testo,
"From: ".$mittente."\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion()) or die ("Email NON inviata");

echo "<h4>Email inviata con successo.</h4>";
endif;
?>


<form action='.' method='post'>
<div style='text-align:center;'>

Mittente (il tuo indirizzo email):<br />
<input type='text' name='mittente' value='' style='width:300px;' /><br /><br />
Oggetto:<br />
<input type='text' name='oggetto' value='' style='width:300px;' /><br /><br />
Testo: <br />
<textarea cols='20' rows='5' name='testo' style='width:300px;'></textarea><br /><br />

<input type='submit' name='invia' value='Invia' />
</div>
</form>

fa il suo dovere:stordita:

Dheavy
19-06-2007, 16:07
io ho questo scriptino:

$mittente = sicur_email($_POST["mittente"]);
$oggetto = sicur_stringa($_POST["oggetto"]);
$testo = sicur_stringa($_POST["testo"]);

if ($mittente AND $oggetto AND $testo):
mail($email, $oggetto, $testo,
"From: ".$mittente."\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion()) or die ("Email NON inviata");

echo "<h4>Email inviata con successo.</h4>";
endif;
?>


<form action='.' method='post'>
<div style='text-align:center;'>

Mittente (il tuo indirizzo email):<br />
<input type='text' name='mittente' value='' style='width:300px;' /><br /><br />
Oggetto:<br />
<input type='text' name='oggetto' value='' style='width:300px;' /><br /><br />
Testo: <br />
<textarea cols='20' rows='5' name='testo' style='width:300px;'></textarea><br /><br />

<input type='submit' name='invia' value='Invia' />
</div>
</form>

fa il suo dovere:stordita:

Grazie mille, ma devo incollare questo script in un file PHP? Dove metto l'indirizzo a cui viene destinata l'e-mail?


No no, mail() non è da usare così!!!

Vedi <qui> (http://it.php.net/manual/en/function.mail.php) sul manuale.

C'è un mio esempio in <questo> (http://www.hwupgrade.it/forum/showthread.php?t=1381561) thread. Non era per un form di email generico ma era "specializzato" per una mail preconfezionata. Ma il succo tanto è lo stesso ....

Ho usato la funziona mail() come nel manuale, ma non è arrivato ancora nulla; sono una schiappa. E' la prima volta che cerco di utilizzare il php. Mi scuso.
Io ho fatto così:

<?php
// The message
$message = "Line 1\nLine 2\nLine 3";

// In case any of our lines are larger than 70 characters, we should use wordwrap()
$message = wordwrap($message, 70);

// Send
mail('il_mio_indirizzo@alice.it', 'My Subject', $message);
?>

Please Help Me... guidatemi! :(

lnessuno
19-06-2007, 16:42
Grazie mille, ma devo incollare questo script in un file PHP? Dove metto l'indirizzo a cui viene destinata l'e-mail?



basta copiare il tutto in una pagina php e funziona... il destinatario è la variabile $email, quindi devi aggiungere

$email = "tuo@indirizzo.com"; all'inizio dello script

ah! devi togliere i vari secur_email e secur_stringa, sono funzioni che utilizzo io ma a te non servono :p

Dheavy
19-06-2007, 16:51
basta copiare il tutto in una pagina php e funziona... il destinatario è la variabile $email, quindi devi aggiungere

$email = "tuo@indirizzo.com"; all'inizio dello script

ah! devi togliere i vari secur_email e secur_stringa, sono funzioni che utilizzo io ma a te non servono :p

Grazie sei gentilissimo, spero di risolvere perkè è una funziona che mi serve urgentemente. :)

quindi basterebbe mettere "$email = "indirizzo@......"
Provo e tra poco ti faccio sapere, thanks!

Dheavy
19-06-2007, 17:01
Questa è la mia pagina: Non trovo la variabile e-mail; un'altra cosa, ma l'action form a cosa serve? Io lo devo inserire?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Richiesta Catalogo</title>
</head>

<body>
<? $mittente = sicur_email($_POST["mittente"]);
$oggetto = sicur_stringa($_POST["oggetto"]);
$testo = sicur_stringa($_POST["testo"]);

if ($mittente AND $oggetto AND $testo):
mail($email, $oggetto, $testo,
"From: ".$mittente."\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion()) or die ("Email NON inviata");

echo "<h4>Email inviata con successo.</h4>";
endif;
?>


<form action='.' method='post'>
<div style='text-align:center;'>

Mittente (il tuo indirizzo email):<br />
<input type='text' name='mittente' value='' style='width:300px;' /><br /><br />
Oggetto:<br />
<input type='text' name='oggetto' value='' style='width:300px;' /><br /><br />
Testo: <br />
<textarea cols='20' rows='5' name='testo' style='width:300px;'></textarea><br /><br />

<input type='submit' name='invia' value='Invia' />
</div>
</form>
</body>
</html>

cionci
19-06-2007, 17:32
Ricordatevi che in php.ini su Windows, va specificato il server smtp da usare...

Dheavy
19-06-2007, 21:30
Mi sono perso...
Ricordatevi che in php.ini su Windows, va specificato il server smtp da usare...

Cosa vuol dire? Devo creare un altro file? Io sono completamento nuovo sul linguaggio php.

"$email = "tuo@indirizzo.com"; all'inizio dello script"

Lo devo aggiungere sempre tra i <body></body>? cioè dev'essere la prima riga?

andbin
19-06-2007, 21:35
Mi sono perso...


Cosa vuol dire? Devo creare un altro file? Io sono completamento nuovo sul linguaggio php.Devi andare nel file php.ini e configurare le entry (es. dal mio php.ini):
[mail function]
; For Win32 only.
SMTP = mail.tin.it
smtp_port = 25

Dheavy
19-06-2007, 22:58
creo un file php.ini e configuro il mio smtp?
Giusto?

Qualcuno mi aiuta sulle domande che ho posto precedentemente? Grazie ragazzi!:muro:

cionci
19-06-2007, 23:08
Come l'hai installato php in locale ? Da solo o con qualche pacchetto all-in-one ?
Il file php.ini lo dovresti aver messo dentro alla directory di Windows...ed è quello che devi modificare.

Dheavy
20-06-2007, 08:59
Io non ho nulla dentro il LOCAL HOST!:confused:

cionci
20-06-2007, 09:12
Ah...le pagine non le provi prima in locale ?

Dheavy
20-06-2007, 09:30
le mie pagine sono online, anche il modulo l'ho provato online, OVVIAMENTE! Solo che al mio sitoweb servirebbe urgentemente quell'ultima pagina, nonché il modulo da compilare. Spero di riuscirci col vostro aiuto; Grazie :)

lnessuno
20-06-2007, 09:39
non mi sembra che tu ti stia sbattendo più di tanto a cercare di capire come funziona, comunque...


<?php
$email = tua@mail.com;

$mittente = $_POST["mittente"];
$oggetto = $_POST["oggetto"];
$testo = $_POST["testo"];

if ($mittente AND $oggetto AND $testo):
mail($email, $oggetto, $testo,
"From: ".$mittente."\r\n" .
"Reply-To: webmaster@{$_SERVER['SERVER_NAME']}\r\n" .
"X-Mailer: PHP/" . phpversion()) or die ("Email NON inviata");

echo "<h4>Email inviata con successo.</h4>";
endif;
?>


<form action='.' method='post'>
<div style='text-align:center;'>

Mittente (il tuo indirizzo email):<br />
<input type='text' name='mittente' value='' style='width:300px;' /><br /><br />
Oggetto:<br />
<input type='text' name='oggetto' value='' style='width:300px;' /><br /><br />
Testo: <br />
<textarea cols='20' rows='5' name='testo' style='width:300px;'></textarea><br /><br />

<input type='submit' name='invia' value='Invia' />
</div>
</form>


dovrebbe funzionare così com'è

cionci
20-06-2007, 09:41
Non è tanto ovvio...perché solitamente un sito si prova prima in locale e poi si mette sul server quando sono complete le varie parti.

Comunque te ovviamente non puoi mettere mano al php.ini sul server, quindi devi prendere il codice lnessuno nella tua pagina php...

Dheavy
20-06-2007, 09:55
Mi scuso con tutti voi... ma credetemi in una settimana ho fatto milioni di prove invane.

Grazie a tutti

Dheavy
20-06-2007, 10:00
Dopo aver messo lo script online

Parse error: syntax error, unexpected '@' in /home/web.siti/"nomesito".it/Catalogo.php on line 10 :confused:

cionci
20-06-2007, 10:02
Ah...se non funzionasse significa che il tuo provider non prevede l'invio di mail tramite php ;)
Magari ha qualche metodo alternativo, informati con loro in tal caso.

cionci
20-06-2007, 10:03
$email = "tua@mail.com";

Devi mettere i doppi apici...

lnessuno
20-06-2007, 10:18
$email = "tua@mail.com";

Devi mettere i doppi apici...

ops vero... mi è sfuggito :D

Dheavy
20-06-2007, 10:27
Ho provato già con le virgolette in alto, si apre, posso compilarlo, ma appena faccio "invia" mi torna in homepage... e non arriva nulla! :(

mummolo
20-06-2007, 10:43
controlla bene la action del form!
La action serve a redirigere la pagina una volta che fai la submit del form.
Ti lascio un mio script che a me funziona:

/* QUESTA PAGINA CONTIENE SEMPLICEMENTE UN FORM CON UN CAMPO DI TESTO DOVE L'UTENTE INSERISCE IL PROPRIO INDIRIZZO EMAIL */

<html>
<head>
</head>
<body>
...
<form action="invio_dati.php" method="get">
<input type="text" name="indirizzo" size="30"/>
<br/>
<br/>
<input type="submit" value="VERIFICA"/>
</form>
</body>
</html>


/* QUESTO FILE LO SALVI "invio_dati.php" E PRATICAMENTE PRENDE L'INDIRIZZO EMAIL CHE HAI INSERITO NEL FORM E GLI MANDA UNA EMAIL */

<?php
$indirizzo_recupero=$_GET['indirizzo'];
$mittente="nome mittente";
$destinatario=$indirizzo_recupero;
$messaggio="Questo è il corpo del messaggio";
$oggetto="quello che vuoi tu!";
if (mail($destinatario, $oggetto, $messaggio, "From: $mittente")) {
echo "<script type='text/javascript'>alert('Messaggio inviato con successo!');</script>";
}
else{
echo "Errore... Nessun messaggio inviato.";
}

A me funziona!Provalo

Dheavy
20-06-2007, 11:44
Il mio indirizzo e-mail lo devo mettere nella prima pagina (quella .htm)?
Nel file invio_dati.php, devo aggiungere dati personali miei o lo lascio invariato?

Mi hai detto che nel file .htm c'è solo un campo, ma se volessi aggiungerne altri, devo aggiungere qualcosa anche sul file .PHP?

Grazie

mummolo
20-06-2007, 12:05
Si certo se vuoi altri campi nella pagina html poi li devi richiamare nella pagina invio_dati.php attraverso il loro nome.
NB: se vuoi aggiungere altri campi li devi inserire all'interno del tag <form></form>.


Per fare una prova lascia il mio script invariato.Se funziona cominci ad effettuare modifiche.

Ciao :)

Dheavy
20-06-2007, 12:06
Si certo se vuoi altri campi nella pagina html poi li devi richiamare nella pagina invio_dati.php attraverso il loro nome.
NB: se vuoi aggiungere altri campi li devi inserire all'interno del tag <form></form>.


Per fare una prova lascia il mio script invariato.Se funziona cominci ad effettuare modifiche.

Ciao :)

So che rompo, ma non riesco a mattere il mio indirizzo e-mail! mi aiuteresti? grazie

mummolo
20-06-2007, 12:08
Scusa hai salvato il primo script e ti appare una finestra con un campo di testo?

Dheavy
20-06-2007, 12:10
Scusa hai salvato il primo script e ti appare una finestra con un campo di testo?

si si, certo!!!

mummolo
20-06-2007, 12:17
Beh scrivici dentro il tuo indirizzo è clicca su invio.
Vai sulla tua casella di posta elettronica e controlla che ti sia arrivato un messaggio.Se non ti è arrivato vuol dire che il tuo server non supporta quella funzione

Dheavy
20-06-2007, 12:24
fatto, sto aspettando con le dita incrociate che arrivi qualcosa.
Una domanda... forse ho fatto una caxxxta:

Io non metto l'e-mail del provider che mi da lo spazio web, ma quella mia personale di @alice.it; può essere che l'errore sia questo?

mummolo
20-06-2007, 12:26
No no deve funzionare ugualmente

Dheavy
20-06-2007, 12:30
Non mi è ancora arrivato nulla.
Ascolta sul sito del provider che mi da host, ci sono delle guide su questa funziona che ho già provato e non funzionano ugualmente. Sono quelle che ho postato sul primo messaggio e le ho trovate a questo link http://www.extremis.it/formmail.asp , riesci a dare un occhiata?

(cmq credo che presto mi sposterò su Aruba.it; così risolvo questi problemi del caps)

Dheavy
23-06-2007, 12:32
Ragazzi volevo risolvere in maniera differente se possibile:

Cercavo un modo per farsì che i clienti possano cliccare sul link "mailto:" ed ovviamente aprire il suo programma di posta elettronica ma con il contenuto e l'oggetto già scritto, c'è modo di farlo?

Grazie

lnessuno
23-06-2007, 12:40
si ma secondo me non ti conviene... troppo spammabile

http://www.google.it/search?hl=it&client=firefox-a&rls=com.ubuntu%3Aen-US%3Aofficial&hs=VSO&q=mailto+sintassi&btnG=Cerca&meta=

http://www.webfract.it/GUIDA/mailTo.htm

Dheavy
23-06-2007, 12:43
tu dici che il problema avuto con il form php è dovuto dall'host che mi da lo spazio? Perché più prove faccio più mi convinco di questa cosa.

lnessuno
23-06-2007, 12:47
tu dici che il problema avuto con il form php è dovuto dall'host che mi da lo spazio? Perché più prove faccio più mi convinco di questa cosa.

no non credo che il problema sia quello, penso sia un problema tuo di codice... fai copia-incolla della pagina, e al limite manda una mail al supporto tecnico. che hosting hai?

Dheavy
24-06-2007, 15:51
no non credo che il problema sia quello, penso sia un problema tuo di codice... fai copia-incolla della pagina, e al limite manda una mail al supporto tecnico. che hosting hai?

L'hosting è http://www.extremis.it ; questo è quello che dicono http://www.extremis.it/formmail.asp ....

Ecco i miei codici: (consigli di mummolo)

File: Catalogo.htm
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
</head>
<body>
...
<form action="invio_dati.php" method="get">
<input type="text" name="indirizzo" size="30"/>
<br/>
<br/>
<input type="submit" value="VERIFICA"/>
</form>
</body>
</html>

File: invio_dati.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Documento senza titolo</title>
</head>

<body>
<?php
$indirizzo_recupero=$_GET['indirizzo'];
$mittente="nome mittente";
$destinatario=$indirizzo_recupero;
$messaggio="Questo è il corpo del messaggio";
$oggetto="quello che vuoi tu!";
if (mail($destinatario, $oggetto, $messaggio, "From: $mittente")) {
echo "<script type='text/javascript'>alert('Messaggio inviato con successo!');</script>";
}
else{
echo "Errore... Nessun messaggio inviato.";
}
?>
</body>
</html>

cionci
24-06-2007, 15:58
Mi sembra corretto, ma hai qualche errore oppure lo invia, ma non ricevi ?
Prova ad inviarlo sulla mail del provider dello spazio web...
Prova inoltre a mettere come mittente l'indirizzo email del provider dello spazio web...

Dheavy
25-06-2007, 10:44
Invia sempre correttamente... con qualsiasi prova fatta, anche con quest'ultima, ma non arriva MAI nulla.

dici di cambiare $mittente="nome mittente"; con $mittente="miaemail@e-mail.it" nel file .php?

Comunque, appena possibile vi offro una birra fresca, siete gentilissimi!!!!

lnessuno
25-06-2007, 11:23
Invia sempre correttamente... con qualsiasi prova che io ho fatto, anche con quest'ultima, ma non mi arriva MAI nulla.

dici di cambiare $mittente="nome mittente"; con $mittente="miaemail@e-mail.it" nel file .php?

Comunque, appena possibile vi offro un birra fresca, siete gentilissimi!!!!

quello probabilmente è da fare, si

(e anche la birra direi che aiuterebbe molto :D)

Dheavy
25-06-2007, 22:27
provato, niente da fare!

Dheavy
01-07-2007, 12:11
è rimasto un mistero! :(

Dheavy
18-07-2007, 22:47
ragazzi ma si deve installare qualcosa all'interno del mio spazio web?

cionci
19-07-2007, 00:11
ragazzi ma si deve installare qualcosa all'interno del mio spazio web?
No...

Dheavy
19-07-2007, 00:17
Magicamente risolto. L'e-mail di Alice.it e hotmail.it/com... non ricevono da form. Con quella di NGI.IT invece ricevo tutto perfettamente. Cmq poi ho creato io un form email in php. Siete stati tutti gentilissimi e disponibili. Grazie davvero. Complimenti.

Dheavy
19-07-2007, 22:48
Ragazzi, se dal form voglio ricevere un file (testo o immagine), come faccio?