SOS: Email e PHP

  • Creatore Discussione Creatore Discussione Hypnos
  • Data di inizio Data di inizio

Hypnos

Nuovo Utente
26 Mar 2005
9
0
0
Ciao! Sto da poco utilizzando Apache Web Server (ver. 1.3.33) e PHP (ver. 4.3.10) sotto Windows XP per creare siti web dinamici e ho un problema: ho testato un form di prova "prova.htm" ed uno script php "mail.php" che deve recuperare i dati del form ed inviarli tramite e-mail in locale. Tuttavia l'invio dell'e-mail non va a buon fine (viene stampato con il comando echo il relativo messaggio di errore). Chiedendo un po' in giro, mi è stato detto che il problema potrebbe essere legato al mio file "php.ini" e che dovrei settare delle righe del file in un certo modo, ma non mi hanno saputo dire quali valori devo settare e soprattutto in che modo e con quali valori. Potreste suggerirmelo voi? Inoltre, devo settare qualcosa anche nel file httpd.conf del Web Server Apache? Grazie ;)
 
Grazie! Lo sto scaricando e più tardi lo testerò. Ti farò sapere se è tutto Ok.
 
Niente da fare. Ho provato un secondo script PHP mi dà questo output:

Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in c:\programmi\apache group\apache\htdocs\clubfaustosilipo\recuperadatiarticolo.php on line 31

:ister:
 
No, ho controllato il mio file "php.ini", ma le righe che tu hai postato c'erano già (con l'aggiunta della variabile smtp_port impostata a 25 che si trova subito dopo la riga nella quale è specificato il server SMTP). Ho provato a visualizzare il contenuto delle variabili da passare come parametri alla funzione mail e mi viene visualizzato il seguente output:

Mittente: From: Utente

Destinatario: pavifalvo@libero.it

Oggetto: prova

Messaggio: provaart


Warning: mail(): "sendmail_from" not set in php.ini or custom "From:" header missing in c:\programmi\apache group\apache\htdocs\clubfaustosilipo\recuperadatiarticolo.php on line 36

Notare che l'indirizzo del mittente ottenuto dal form (quello che dovrebbe apparire tra < e >) non viene visualizzato affatto (il che significa che non viene proprio preso in considerazione)e questa potrebbe essere a mio avviso la causa del fallimento della funzione mail( ). Che strano!!! :confused:
 
Open_think, ecco il codice:

1- questo e' il codice del form HTML dal quale devo recuperare i dati:

<form action="RecuperaDatiArticolo.php" method="post" name="ArticoloForm" target="_self" id="ArticoloForm">
<table width="326" height="539" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="138" height="25">
<div align="center"></div></td>
<td width="188">
<div align="left"></div></td>
</tr>
<tr>
<td height="28">
<div align="center">NOME
</div>
</td>
<td>
<div align="left">
<input name="CTNome" type="text" id="CTNome5">
</div>
</td>
</tr>
<tr>
<td>
<div align="center" >COGNOME
</div>
</td>
<td>
<div align="left">
<input name="CTCognome" type="text" id="CTCognome3">
</div>
</td>
</tr>
<tr>
<td height="28"><div align="center" >
TUA E-MAIL
</div>
</td>
<td>
<div align="left">
<input name="CTemail" type="text" id="CTemail2">
</div>
</td>
</tr>
<tr>
<td>
<div align="center" TITOLO ARTICOLO
</div>
</td>
<td>
<div align="left">
<input name="CTTitoloart" type="text" id="CTTitoloart2">
</div>
</td>
</tr>
<tr>
<td>
<div align="center" >
TESTO DELL'ARTICOLO
</div>
</td>
<td>
<div align="left">
<textarea name="ATArticolo" cols="50" rows="30" id="textarea">
</textarea>
</div>
</td>
</tr>
</table>
<input name="email_destinatario" type="hidden" id="email_destinatario3" value="pavifalvo@libero.it">
</input>
<input name="SubmitButton" type="submit" id="SubmitButton" value="Invia l'articolo!"></input>
<input name="ResetButton" type="reset" id="ResetButton3" value="Cancella tutto"></input>
</form>

2- questo è il file PHP che dovrebbe recuperare i dati (l'ho commentato ampiamente per capire meglio il tutto... ;) ):

<body>
<?php
#Recupero valore relativo al nome dell'utente
$nome_utente = $_POST['CTNome'];
#Recupero valore relativo al cognome dell'utente
$cognome_utente = $_POST['CTCognome'];
#Recupero valore del titolo dell'articolo
$titolo_articolo = $_POST['CTTitoloart'];
#Recupero valore dell'indirizzo e-mail
$email_utente = $_POST['CTemail'];
echo "<p>$email_utente</p>";
#Recupero testo dell'articolo
$corpo_articolo = $_POST['ATArticolo'];
#Indirizzo e-mail del destinatario
$destinatario_email = $_POST['email_destinatario'];

$messaggio="";

#Variabile contenente il destinatario dell'e-mail
$destinatario= "$destinatario_email";

#Variabile contenente il titolo dell'articolo (come oggetto dell'e-mail)
$oggetto="$titolo_articolo";

#Variabile contenente il mittente dell'e-mail e il suo indirizzo di posta elettronica
$intestazione="From: Utente <$email_utente>";

#Variabile contenente il testo dell'articolo
$messaggio.="$corpo_articolo";

#Visualizziamo per prova il contenuto della variabile $intestazione e delle altre variabili.
#PROBLEMA: l'indirizzo di posta elettronica del mittente NON VIENE VISUALIZZATO, il che vuol dire
#che non è contenuto
#nella variabile $intestazione e di conseguenza l'invio dell'e-mail
#non va a buon fine!!! Perché?

echo "<p><b>I seguenti valori dovranno essere utilizzati dalla funzione mail():</b></p>";
echo "<p>Mittente: $intestazione</p>";
echo "<p>Destinatario: $destinatario</p> ";
echo "<p>Oggetto: $oggetto</p>";
echo "<p>Messaggio: $messaggio</p>";

#invio dell'e-mail (che non va mai a buon fine!!!)
mail($destinatario, $oggetto, $messaggio, $intestazione);

?>
</body>

Questo script PHP dovrebbe spedirmi un'e-mail mandata da un utente qualunque che vuole inviare un articolo da pubblicare on-line sul sito che intendo realizzare.
Spero che sia tutto chiaro. Vedi se puoi dargli un'occhiata. Appena mi è possibile vedo di risponderti su questo thread. Ciao e grazie. ;)
 
Ultima modifica:
nei passaggi tipo questo
PHP:
#Variabile contenente il destinatario dell'e-mail
$destinatario= "$destinatario_email";
fai un assegnazione di una stringa non del valore di una variabile
prova ha riscriverlo cosi
PHP:
#Variabile contenente il destinatario dell'e-mail
$destinatario= $destinatario_email;
;)
 
Open_think, niente da fare!!! :ister:
Ho provato a fare come mi hai detto, ma il "risultato" non cambia!!! Incredibile!!!:confused: :confused: :confused:

Prima hai detto che volevi provarlo sul tuo server Windows. Per caso hai visto se funzionava? Fammi sapere.
 
Dimenticavo! In un messaggio precedente ti ho detto che ho controllato il mio file "php.ini". Tuttavia, se a te funziona, significa che c'è qualcosa che non va nei miei file di configurazione (o "php.ini" o "httpd.conf" del web server Apache). Pertanto ti ho postato un file zip contenente entrambi. Se a tempo perso vuoi dargli uno sguardo... ;)
 

Allegati

se questi sono corretti non ci dovrebbero essere problemi
[mail function]
; For Win32 only.
SMTP = localhost
smtp_port = 25

; For Win32 only.
sendmail_from = me@localhost.com

; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
cmq dò un occhiata hai yuoi file :)
 
Io sono nuovissimo del php......
Mi ritrovo con questo errore....
Parse error: parse error, unexpected T_LNUMBER in /home/ispirazi/public_html/email/inviato.php on line 11

Avete consigli???

la versione prova del form è qui prova
:( quanto so schiappa
 

Discussioni simili