2010-06-18 8 views
44

Sto utilizzando la seguente per inviare una e-mail:nuova linea non funziona in PHP posta

<php .... 
$message = 'Hi '.$fname.', \r\n Your entries for the week of ' 
    .$weekof.' have been reviewed. \r\n Please login and View Weekly reports to see the report and comments. \r\n Thanks, \r\n'.$myname; 

mail($to, $subject, $message, $from); 
?> 

Quando il messaggio viene ricevuto non si avvia una nuova linea presso il "\ r \ n", ma si limita a stampare come parte del messaggio.

Ho provato solo in Thunderbird 3, non in altri client.

risposta

96

tenta di modificare la ' a " - php interpreta una stringa all'interno di virgolette singole come letterali, mentre con le virgolette (") si espanderà la \r\n a ciò che si desidera.

Maggiori informazioni: http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

+3

Grazie. Questo ha fatto il trucco. Non sapevo che ci fosse una differenza tra virgolette singole e doppie. – ChuckO

+1

Puoi per favore dare un esempio di codice? –

1
<?php .... 
$message = "Hi ".$fname.", \r\n Your entries for the week of " 
    .$weekof." have been reviewed. \r\n Please login and View Weekly reports to see the report and comments. \r\n Thanks, \r\n".$myname; 

mail($to, $subject, $message, $from); 
?> 
+0

In che modo questo codice risolve il problema del richiedente? – APerson

+0

Spiega il tuo codice –

2

Non una risposta alla domanda, ma può essere di aiuto a qualcuno.

Inviare un messaggio HTML e invece di \ n, utilizzare <BR>.

E utilizzare <PRE></PRE> o CSS per il testo preformattato, traducendo quindi \ n per le nuove linee effettive.

$headerFields = array(
    "From: [email protected]", 
    "MIME-Version: 1.0", 
    "Content-Type: text/html;charset=utf-8" 
    ); 
mail($to, $subj, $msg, implode("\r\n", $headerFields));