2012-07-13 58 views
1

在输入<textarea>文字看起来不错3线PHP格式的电子邮件

First Line 
John Smith 
Ivan Normand 

当我用PHP捕捉输入和发送电子邮件文本看起来像这样 当我用PHP捕捉输入和发送电子邮件文本看起来像这样

First Line     Bellman:\r\n       \r\nJohn Smith\r\nIvan Normand 

我使用雷鸟接收电子邮件,我看到这个烂摊子。它在webmail中正确显示。

$message = $_POST["message"]; 

$headers = "From: $from"; 

// boundary 

$semi_rand = md5(time()); 

$mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 

// headers for attachment 

$headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . " boundary=\"{$mime_boundary}\""; 

// multipart boundary 

$message = "This is a multi-part message in MIME format.\n\n" . "--{$mime_boundary}\n" . "Content-Type: text/plain; charset=\"utf-8\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . $message . "\n\n"; 

$message .= "--{$mime_boundary}\n"; 

// preparing attachments 

for ($x = 0; $x < count($files); $x++) { 

    $file = fopen($files[$x], "rb"); 

    $data = fread($file, filesize($files[$x])); 

    fclose($file); 

    $data = chunk_split(base64_encode($data)); 

    $message .= "Content-Type: {\"application/octet-stream\"};\n" . " name=\"$files[$x]\"\n" . 

     "Content-Disposition: attachment;\n" . " filename=\"$names[$x]\"\n" . 

     "Content-Transfer-Encoding: base64\n\n" . $data . "\n\n"; 

    if ($x == count($files) - 1) { 
     $message .= "--{$mime_boundary}--\r\n"; 
    } else { 
     $message .= "--{$mime_boundary}\n"; 
    } 
} 

// send 

$ok = @mail($to, $subject, $message, $headers); 
+2

有没有看到产生电子邮件文本代码的任何机会呢? – andrewsi 2012-07-13 18:27:17

+0

我认为电子邮件正文逃脱正确 – Constantin 2012-07-13 18:42:00

+0

你可以纠正然后 – 2012-07-13 18:42:34

回答

0

您可以使用PHP的nl2br(),其将 '\ n' 字符为 '
'。

你可以用它象下面这样:

$message = nl2br($_POST["message"]); //Please take care of sql injection here