Newsgroup: it.comp.www.php
Titolo: Due servers Linux e uno Exchange 2007

Ho due servers Linux, entrambi con PHP 5.2.4.
Su entrambi i server, postfix e' configurato con lo stesso mail relayhost 
(che e' Microsoft).
Su entrambi eseguo lo script qui sotto.
Il primo server manda il messaggio tranquillamente, e viene ricevuto bene da 
chiunque, e visto come una tabella HTML.
Il secondo server manda il messaggio e viene ricevuto da tutti. Se pero' chi 
riceve ha Exchange 2007, allora i tags HTML vengono mostrati anziche' 
interpretati, il campo "From:" rimane vuoto, e la scritta "From: 
pi...@mydomain.com
" appare nel testo dell'email.
Si dice che Exchange 2007 sia particolarmente pignolo nell'interpretare gli 
header. Se ci fosse un difettino formale negli header, avremmo una 
spiegazione. Ma gli header mi sembrano, a prima vista, innocenti.
Il fatto che il Content-type divenga parte del body mi fa pensare che il 
\r\n che uso per separare le linee di header sia il problema. Ma allora come 
le separo le linee degli headers?
Ce la fate ad aiutarmi?
<?php
// subject
$subject = 'Testing Mail for Jan 2010';
// message
$message = '
<html>
<head>
 <title>Birthday Reminders for August</title>
</head>
<body>
 <p>Here are the birthdays upcoming in August!</p>
 <table border="1">
   <tr>
     <th>Person</th><th>Day</th><th>Month</th><th>Year</th>
   </tr>
   <tr>
     <td>Joe</td><td>3rd</td><td>August</td><td>1970</td>
   </tr>
   <tr>
     <td>Sally</td><td>17th</td><td>August</td><td>1973</td>
   </tr>
 </table>
</body>
</html>
';
// To send HTML mail, the Content-type header must be set
 $headers  = "MIME-Version: 1.0\r\n";
 $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
 $headers .= "From: 
pi...@mydomain.com
\r\n";
 // Mail it
 $email=mail('
pl...@mydomain.com
', $subject, $message, $headers);
 if($email){
 echo $message;
 exit;
 echo "email Sent Sucessfully";
}
else{
echo "Internal Server error";
}
?>

le separo le linee degli headers?
Con \r\n, ma prova a separare nello stesso modo anche le linee del body.
Avere \r\n e \n nello stesso documento a volte imballa alcuni parser.
Splitta con \n, strtr()a via tutti gli \r, e reimplodi con \r\n.
Leonardo
-- 
The cock doth craw, the day doth daw,
the channerin' worm doth chide:
gin we be mist oot o' oor place,
a sair pain we maun bide.

 Splitta con \n, strtr()a via tutti gli \r, e reimplodi con \r\n.
Idea interessante, ma purtroppo non ha aiutato. Il nuovo codice e' qui 
sotto, e continua a dare problemi.
Leggendo la versione tedesca dell'help di mail in PHP, dicono che a volte si 
risolvono certi problemi usando \n negli headers, ma che e' meglio non farlo 
perche' e' contro lo standard.
<?php
// subject
$subject = 'Testing Mail for Jan 2010';
// message
$message = "<html>\r\n<head>\r\n<title>HTML 
test</title>\r\n</head>\r\n<body>\r\nciao <b>ciao</b> 
ciao\r\n</body>\r\n</html>\r\n" ;
// To send HTML mail, the Content-type header must be set
 $headers  = "MIME-Version: 1.0\r\n";
 $headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
 $headers .= "From: 
i...@mydomain.com
\r\n";
 // Mail it
 $email=mail('
i...@mydomain.com
', $subject, $message, $headers);
 if($email){
  echo $message;
