Newsgroup: it.comp.www.php
Titolo: inviare un'email

Ho trovato in rete le istruzioni per inviare un messaggio email (p. es., 
per confermare un'iscrizione) utilizzando la funzione 
mail($EMAIL,$OGGETTO,$MESSAGGIO,$HEADER). La cosa strana è che la cosa 
funziona perfettamente se invio messaggi a indirizzi relativi ai domini 
gmail.com
 e 
hotmail.com
, ma non ricevo nulla (anche se il messaggio 
risulta inviato, mail non ritorna mai false) se spedisco ad indirizzi 
che terminano con 
inwind.it
, 
tiscali.it
 e 
email.it
. Ho l'impressione che 
il messaggio venga rifiutato dal server a cui lo invio, perchè se il 
problema fosse nel codice php non dovrei ricevere il messaggio neppure 
con gmail o con hotmail.
Qualcuno può chiarirmi le idee? Se inviassi un messaggio tramite un 
provider, metterei come mittente un indirizzo di posta relativo al mio 
provider. In questo caso non so come fare.

Allego il codice che ho usato: nelle prove che ho fatto compare sempre 
il messaggio "Email inviata", ma solo i messaggi che terminano con 
gmail.com
 o 
hotmail.com
 li ricevo effettivamente, mentre quelli 
tiscali.it
, 
inwind.it
 e 
email.it
 sembrano svaniti nel nulla.
Ho sbagliato qualcosa?
N.B, Nel campo sender dell'intestazione delle email ricevute risulta 
apache@localhost@localdomail. Può essere questo il problema? In caso 
affermativo, è possibile in qualche nodo cambiarlo in 
mio...@mioprovider.it
?
#######################################
<?php
$mail_from = "[omissis]";
$mail_to = $_GET["email"];
$mail_oggetto = "Test";
$mail_corpo = "Questo è un test";
if (mail($mail_to, $mail_oggetto, $mail_corpo, "From: $mail_from"))
echo "Email inviata a $mail_to";
else
echo "Errore: email non inviata $mail_to.";
?>
#######################################

 apache@localhost@localdomail. Può essere questo il problema?
Anticipo: ti rispondo in fretta e senza leggere tutto.
Potrebbe esser un problema di "xwarning"
Dal manuale PHP:
----
Con il parametro parametri_addizionali è possibile impostare un parametro 
addizionale a linea di comando per il programma configurato per inviare mail 
usando sendmail_path. Per esempio si può impostare il corretto valore per 
envelope sender di sendmail con l'opzione -f di sendmail. Potrebbe essere 
necessario aggiungere l'utente che ha in esecuzione il server web alla 
configurazione di sendmail per prevenire l'aggiunta dell'intestazione 
'X-Warning' quando si imposta envelope sender in questo modo. Esempio 3. 
Invio di mail con intestazioni supplementari e impostazione dei parametri 
addizionali a linea di comando.
<?php
mail("
nes...@example.com
", "oggetto", $messaggio,
     "From: webmaster@{$_SERVER['SERVER_NAME']}", 
"-fwebmaster@{$_SERVER['SERVER_NAME']}");
?>
-----  

 per inviare mail usando sendmail_path.
Nota:  Questo quinto parametro è stato aggiunto in PHP 4.0.5. A partire 
da PHP 4.2.3, questo parametro è disabilitato in modalità safe_mode, se 
si cerca di usarlo comunque, la funzione mail() darà un messaggio di 
errore e restituirà FALSE.
http://www.goldenweb.it/manuale_php/function.mail.php
Ho l'impressione che sia inutile provare...
Grazie comunque del consiglio. Io credo di dover configurare sendmail in 
modo che invii email a nome di 
us...@tiscali.it
, e non 
apa...@locahost.localdomain: se invio mail con java il Return-Path viene 
correttamente settato, ed infatti ricevo tutte le mail. Avevo anche 
trovato qualcosa in rete, ma era per una Debian, e sono riuscito a 
seguirne le instruzioni sulla mia Fedora 6 solo fino a metà, dopo path e 
contenuto dei files di configurazione non corrispondevano più, e ho 
preferito non continuare...
Marco

 Ho l'impressione che sia inutile provare...
E invece no, ho inserito il quinto parametro "-f 
us...@tiscali.it
", e ora
ricevo tutti i messaggi che invio!
Così, ho controllato e mi sono accorto che nel php.ini la modalità 
safe_mode è a off. Cosa comporta questo per la sicurezza? A naso direi 
che non sia una cosa buona, o sbaglio?
E se settassi a on safe_mode, ci sarebbe un modo alternativo di passare 
us...@tiscali.it
 a sendmail?

E se settassi a on safe_mode, ci sarebbe un modo alternativo di passare
Potresti usare il pear "Mail", ma non so gli effetti con safe_mode on. In
teoria dovrebbe andare se usi un account email diverso da quello del dominio
(es. con gmail) che richiede autenticazione. Senza autenticazione mi pare 
usi
di default la mail di php quindi non avresti risolto nulla.
Fai una prova... magari funziona anche stavolta.
 

 di default la mail di php quindi non avresti risolto nulla.
Ho trovato questo per configurare sendmail per un account gmail, ma è 
per una slackware 11.0, e io mi sono dovuto fermare a metà perchè su 
Fedora alcuni file di configurazione sono diversi per posizione e contenuto.

 Scusa l'ignoranza, cosa vuol dire il peer "Mail"?
*Pear* Mail
http://www.pear.php.net/
I pear sono delle librerie di classi per php generalemte incluse nel 
pacchetto di installazione.
Di solito semplificano la vita ( come per esempio il pear mail quando devi 
inviare posta da unindirizzo che non è del dominio dove risiede il sito e 
che richiede autenticazione)
Per la verità ho usato solo questo e quello per zippare i file inviati 
tramite form dai contatti del sito (per preventivi ecc ecc)
Quasi tutti i pear hanno documentazione.
Se installi Xampp come pacchetto apache+php ti ritrovi tutti i pear che ti 
servono altrimenti vai sul sito di php e ti scarichi tutto.
Ora io di linux non ne so molto tuttavia e in 1/2 OT ti segnalo alcuni 
pacchetti che potrebbero farti comodo:
Xampp (webserver)
EasyEclipse per php (php)
Aptana for Eclipse ( javascript php css ecc ecc)
JSE( Javascript) di Adobe
Non sono il massimo dell'usabilità ma sono free e aggiornati frequentemente.
Aptana per dir la verità è un po' lento sul mio pc, ma va discretamete.
ciao
 

 provider. In questo caso non so come fare.
Finisci nello SPAM. Cmq ti hanno già risposto, devi solo settare qualche 
altro header.
;)
--
Napolux
http://www.napolux.com
http://www.scaricafirefox.it

 altro header.
Ho provato, ma il risultato sembra lo stesso. Quali altri campi 
dell'header, secondo te, dovrei settare?