Newsgroup: it.comp.lang.javascript
Titolo: mandare una mail con php e javascript

sto provando a mandare una mail in questo modo (sě, lo so che č un po'
strano ;))
Ho creato la pagina 1.htm col seguente codice javascript
<script language="JavaScript">
 document.write ("<" + "script language='JavaScript' type='text/javascript'
src='");
 document.write("
http://www.sito.com/mail/2.htm
")
 document.write ("'><" + "/script>");
</script>
2,htm č invece
<?php
$to      = '
mio_indir...@libero.it
';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: 
webm...@example.com
' . "\r\n" .
   'Reply-To: 
webm...@example.com
' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
?>
ma non funziona, qualche idea su dove possa essere il problema?
Grazie

 Grazie
Forse, e sottolineo forse, il problema sta nel fatto che pretendi di
mettere del codice php in un file con estensione htm il quale, quindi, non
viene processato come file php.
-- 
~Nando~ :-/__.oO
Apostolo della Prova

 
A parte che sei nel ng sbagliato... per problemi di php vai su it.comp.www.php
Cmq... il file che manda la mail deve chiamarsi 2.php e non 2.htm
Ovviamente il webserver deve supportare php altrimenti non ci riuscirai mai ;)
ciao
Viandante

 Cmq... il file che manda la mail deve chiamarsi 2.php e non 2.htm
Il server è impostato in modo da processare anche i files .htm, infatti se
chiamo direttamente 2.htm, la mail viene inviata senza problemi ;)
Grazie

 </script>
Per sicurezza ti converrebbe fare un unico document.write, e utilizzare
anche open()/close():
<script type="text/javascript">
	document.open("text/html");
	document.write ("<" + "script type='text/javascript'
src='
http://www.sito.com/mail/2.htm
'></scr"+"ipt>");
	document.close();
</script>
Seconda di poi, a questo punto sarebbe quasi piů opportuno richiamare un
immagine invece che un document.write di uno script js (che poi script non
lo č):
<script type="text/javascript">
	var mailSender=new Image();
	mailSender.src="
http://www.sito.com/mail/2.htm
";
</script>
č un "poco" piů pulita come cosa.
Inoltre, se prima di impostare l'src assegni all'oggetto gli eventi onload
e onerror, puoi anche eseguire lato client delle operazioni in base al
responso della pagina php, ad esempio se ha avuto problemi o meno
nell'esecuzione del codice.
Ovviamente, per far funzionare questo tipo di meccanismo devi avere
l'accortezza di far inviare da php un immagine "buona" nel caso in cui č
andato tutto bene (basta anche una gif di 1x1 pixel), cosě che "scatti"
l'evento "onload", e "nulla" nel caso vi sia qualche errore (in modo da far
scattare l'evento onerror).
Altrimenti esiste sempre l'XmlHttpRequest, e vai sul sicuro. Ovviamente
devi tener conto che solo alcuni browser supportano tale oggetto (e non
tutti nello stesso identico modo).
-- 
~ "Nell'anno 1969 č bastata la potenza di calcolo di due Commodore 64 per
mandare con successo una navicella sulla Luna. Nell'anno 2003 č
necessario un Pentium 4 a 2000 Mhz per far funzionare Windows XP.
Qualcosa deve essere andato storto."

 nell'esecuzione del codice.
non so quasi nulla di javascript: è la prima volta che lo uso e non credo di
usarlo a lungo... mi puoi dare qualche sito per imparare ad usare questi due
"eventi"?
Grazie!

 "eventi"?
Nel caso che ti ho illustrato, è abbastanza semplice l'uso dei due eventi:
var mailSender=new Image();
mailSender.onload=function(){
	alert("immagine caricata con successo.");
}
mailSender.onerror=function(){
	alert("errore durante il caricamento dell'immagine");
}
mailSender.src="http://.....";
Per i siti... beh, prova a cercare su google: i riferimenti che posso darti
io temo siano un po' troppo "tecnici". Cmq sia, qualche url delle
reference:
# js 1.5
http://developer-test.mozilla.org/docs/Core_JavaScript_1.5_Reference
# DOM standard (Document Object Model)
http://www.w3.org/DOM/
# DOM Gecko (Firefox, Mozilla, Netscape..)
http://www.mozilla.org/docs/dom/domref/
# DOM Internet Explorer
http://msdn.microsoft.com/workshop/author/dhtml/reference/dhtml_reference_entry.asp
-- 
~ "Nell'anno 1969 è bastata la potenza di calcolo di due Commodore 64 per
mandare con successo una navicella sulla Luna. Nell'anno 2003 è


Allora, ho modificato i files secondo le tue indicazioni:
questo 1.htm
<script type="text/javascript">
var mailSender=new Image();
mailSender.onload=function(){
alert("immagine caricata con successo.");
}
mailSender.onerror=function(){
alert("errore durante il caricamento dell'immagine");
}
mailSender.src="
http://www.sito.it/mail/2.htm
";
</script>
questo invece 2.htm
<?php
$to      = '
mup...@libero.it
';
$subject = 'the subject';
$message = 'hello';
$headers = 'From: 
webm...@example.com
' . "\r\n" .
   'Reply-To: 
webm...@example.com
' . "\r\n" .
   'X-Mailer: PHP/' . phpversion();
mail($to, $subject, $message, $headers);
echo "<img src='
http://www.sito.it/mail/1.gif
'>";
?>
Nel momento in cui carico 1.htm, mi scrive a video "errore durante il
caricamento dell'immagine"
Qualche idea?
grazie

 caricamento dell'immagine"
Si'... allora, il fatto e' che il file php deve *diventare un'immagine*.
Come fai tu, il browser cerca una immagine e trova un file di testo, per
cui ti da' errore. Io conosco appena appena asp e ti so dire che va settato
il content-type della pagina e quindi bisogna scrivere il file di immagine
nella pagina stessa... sono stato sicuramente poco chiaro per cui ti posto
il codice asp:
<%
// Accede al File System del server
var oFS=Server.CreateObject("Scripting.FileSystemObject");
// Apre in lettura il file dell'immagine come Unicode
var oTs=oFS.OpenTextFile(Server.MapPath("images/immagine.gif"),1,false,-1);
// Setta il corretto MIME-type della pagina
Response.ContentType="image/gif";
// Scrive nella pagina, in modalita' binaria, il contenuto
// del file dell'immagine
Response.BinaryWrite(oTs.ReadAll());
// Chiude il file dell'immagine
oTs.Close();
%>
Piu' chiaro di cosi' non riesco...


 ti posto il codice asp:
[cut]
Azz, con php sembra anche piu' immediato...
prova un po' questo:
<?php
// nell'ipotesi che immagine.gif sia nella
// stessa cartella di questo file .php
$fd=fopen("immagine.gif","r");
header("Content-Type:image/gif");
header("Content-Transfer-Encoding:binary");
fpassthru($fd);
fclose($fd);
?>
