Newsgroup: it.comp.www.php
Titolo: Spedire mail

Salve,
dovrei spedire una newsletter a degli iscritti al mio sito, ho provato con
questo script, che però non funziona. Sembra che non ci siano errori
nella spedizione, mail mi restituisce true, ma i messaggi non vengono
recapitati. Lavoro con un server Apache in locale, ma il sito è comunque
visibile all'esterno tramite un servizio di DNS dinamico. Ho postfix e
sendmail che comunque ssono attivi e funzionanti. Sapreste individuarmi
l'errore?
Francesco
<?
function send_mail($fromname, $fromaddress, $toname, $toaddress, $subject, $message)
{
   $headers  = "MIME-Version: 1.0\n";
   $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
   $headers .= "X-Priority: 3\n";
   $headers .= "X-MSMail-Priority: Normal\n";
   $headers .= "X-Mailer: php\n";
   $headers .= "From: \"".$fromname."\" <".$fromaddress.">\n";
   return mail($toaddress, $subject, $message, $headers) or die('Impossibile inviare il messaggio';
include($_SERVER['DOCUMENT_ROOT']."/script/dbconnect.php");
$query="Select * From newsletter";
$result = mysql_query($query);
while ($record=mysql_fetch_array($result))
{
echo
send_mail("IO","
I...@tiscali.it
",$record['UserMail'],$record['Descrizione'],"Spedizione
Mail prova","Il messaggio è: che volete");
	}
?>
-- 
There are two kinds of researchers:
those that have implemented something and those that have not.
The latter will tell you that there are 142 ways of doing things
and that there isn't consensus on which is best.
The former will simply tell you that 141 of them don't work.

 l'errore?
Ma le variabili $_POST quando le recuperi?
$fromname, $message, ecc ecc.
Max
-- 
Se mi volete scrivere...
massimo . ori AT alice . it
Il mio sito?
http://www.maxori.it

 Ma le variabili $_POST quando le recuperi? $fromname, $message, ecc ecc.
Sono dati che ho in un database MySql, saranno circa 300 nominativi.
La variabile $record contiene i campi che mi interessano, cioè il nome e
l'indirizzo email dell'iscritto:
send_mail("IO","
I...@tiscali.it
",$record['UserMail'],$record['Descrizione'],"Spedizione
Mail prova","Il messaggio è: che volete");
Francesco


 ?>
Se invece di usare send_mail provi a stampare i dati che usi nella
funzione, li vedi? Nel recupero dei dati dal database aggiungi una
gestione degli eventuali errori restituiti.
Ciao.
-- 
Federico

 gestione degli eventuali errori restituiti.
Si, i dati vengono passati alla funzione correttamente.
 
Francesco


> nell'error_reporting e display_errors = On.
Hai impostato error_reporting e display_errors? Togli il
die('Impossibile inviare il messaggio'). Che succede?
 
A me la seguente funzione su Apache 1.3.34 e PHP 4.4.1 invia
regolarmente l'e-mail:
function send_mail ($fromname, $fromaddress, $toaddress, $subject, $message)
{
  $headers  = "MIME-Version: 1.0\r\n";
  $headers .= 'From: "'.$fromname.'" <'.$fromaddress.'>'."\r\n";
  $headers .= 'Reply-To: "'.$fromname.'" <'.$fromaddress.'>'."\r\n";
  $headers .= 'Content-type: text/plain; charset=iso-8859-1'."\r\n";
  $headers .= 'X-Priority: 3'."\r\n";
  $headers .= 'X-MSMail-Priority: Normal'."\r\n";
  $headers .= 'X-Mailer: php '.phpversion()."\r\n";
 
  mail($toaddress, $subject, $message, $headers);
}
-- 
Federico



IO credo che il problema si nel programma che spedisce la posta. Postfix
è attivo e funzionante, non so sendmail. Non so come farlo avviare da
boot.


 avviare da boot.
In questo caso temo di non esserti molto d'aiuto. Non so se sia il più
adatto, ma forse potresti provare a chiedere su it.comp.www.server.
Ciao.
-- 
Federico


Dimmi se ti va questo semplice script:
<?php
$to      = '
nob...@example.com
';
$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);
?>
Cosi vedi se il server funziona. Posso dire che i server linux sono 
molto suscetibili in fatto di \r\n, quindi occhio.

 Dimmi se ti va questo semplice script:
...
Forse volevi rispondere a Lampa Dario... Comunque a me quello script
funziona.
Ciao.
-- 
Federico