2014-03-28 33 views
2

我試圖使用mail()函數在PHP中發送郵件。郵件發送成功,它存在於收件箱中。問題是打印在電子郵件標題中的標題。我已經嘗試了各種標題的代碼。 1.首先是這樣的:Php Mail()函數:打印頭文件

$headers = "From: My Example Email".'\r\n'. 
"MIME-Version: 1.0".'\r\n'. 
"Content-Type: text/html; charset=ISO-8859-1".'\r\n'. 
'X-Mailer: PHP/' . phpversion(); 

結果:My Example EmailrnMIME-Version

2.Second頭代碼:

$headers = "From: My Example Email"."\r\n". 
"MIME-Version: 1.0"."r\n". 
"Content-Type: text/html; charset=ISO-8859-1"."\r\n". 
'X-Mailer: PHP/' . phpversion(); 

結果:郵件沒有發送

3。第三個標題代碼:

$headers = "From: My Example Email".'"\r\n"'. 
"MIME-Version: 1.0".'"\r\n"'. 
"Content-Type: text/html; charset=ISO-8859-1".'"\r\n"'. 
'X-Mailer: PHP/' . phpversion(); 

結果:My Example Emailrn

我使用PHP 5.4.19。任何答案都會有幫助。

UPDATE

這是我的全部代碼:

class User{ 
function callname(){ 
    $user = $_SESSION['id']; 
    $query = ("SELECT * FROM user WHERE user.id='$user'"); 
    while ($result=mysql_fetch_array($query)){ 
      echo ($result['username']);}}} 

$user = new User; 

if($_SERVER["REQUEST_METHOD"] == "POST"){ 
    $username = mysql_real_escape_string(trim($_POST['username'])); 
    $check = mysql_num_rows(mysql_query("SELECT * FROM user WHERE username='$username'")); 
if ($check==TRUE){ 
    $name = $user->callname(); 
    $to = "[email protected]"; 
    $subject = "Example Subject"; 
    $headers = "From: My Example Email".'"\r\n"'. 
    "MIME-Version: 1.0".'"\r\n"'. 
    "Content-Type: text/html; charset=ISO-8859-1".'"\r\n"'. 
    'X-Mailer: PHP/' . phpversion(); 
    $message = "Hai $name, this is the new message."; 

     mail($to, $subject, $message, $headers); 
} else { 
?> 
    <script type="text/javascript"> 
     alert("Sorry, username not exist !"); 
    </script> 
    <?php }} 

新的更新:

長的試用期結束後和大家一起在這裏幫忙,終於找到了解決辦法。但也許是不尋常的。

$headers = 'From: My Example Email'.'""'. 
'MIME-Version: 1.0'.'""'. 
'Content-Type: text/html; charset=ISO-8859-1'.'""'. 
'X-Mailer: PHP/' . phpversion(); 

但我還不明白。有些文獻說每個部分都是由「\ r \ n」粘貼的,但這在我的代碼中不起作用。 感謝您的幫助。非常感謝。這一切都很有幫助。

+0

如果你的服務器運行的是Postfix,你最好使用'PHP_EOL'而不是'\ r \ n'作爲行結束符。 – CD001

+0

我在localhost運行這個。我如何看到Postfix裏面? – merli

回答

0

您沒有正確封裝報價。

做的正確的方式...

$headers = 'From: My Example Email'."\r\n". 
    'MIME-Version: 1.0'."\r\n". 
    'Content-Type: text/html; charset=ISO-8859-1'."\r\n". 
    'X-Mailer: PHP/' . phpversion(); 

EDITED CODE

<?php 
class User{ 
    function callname(){ 
     $user = $_SESSION['id']; 
     $query = ("SELECT * FROM user WHERE user.id='$user'"); 
     while ($result=mysql_fetch_array($query)){ 
      return $result['username'];}}} 

$user = new User; 

if($_SERVER["REQUEST_METHOD"] == "POST"){ 
    $username = mysql_real_escape_string(trim($_POST['username'])); 
    $check = mysql_num_rows(mysql_query("SELECT * FROM user WHERE username='$username'")); 
    if ($check==TRUE){ 
     $name = $user->callname(); 
     $to = "[email protected]"; 
     $subject = "Example Subject"; 
     $headers = "From: My Example Email"."\r\n". 
      "MIME-Version: 1.0"."\r\n". 
      "Content-Type: text/html; charset=ISO-8859-1"."\r\n". 
      "X-Mailer: PHP/" . phpversion(); 
     $message = "Hai $name, this is the new message."; 

     mail($to, $subject, $message, $headers); 
    } else { 
     ?> 
     <script type="text/javascript"> 
      alert("Sorry, username not exist !"); 
     </script> 
    <?php }} 
+0

不工作的人。如果我使用double qoute'「\ r \ n」',則不想發送電子郵件。 – merli

+0

你可以發佈你的整個代碼的問題? –

+0

我已經發布了整個代碼。謝謝你的幫助。 – merli

0
$headers = "From: My Example Email"."\r\n". 
"MIME-Version: 1.0"."\r\n". 
"Content-Type: text/html; charset=ISO-8859-1"."\r\n". 
'X-Mailer: PHP/' . phpversion(); 

試試這個

+0

電子郵件不想發送男人 – merli

0

$標題= 「MIME-版本:1.0」。爲 「\ r \ n」 個;
$ headers。=「Content-type:text/html; charset = UTF-8」。爲 「\ r \ n」 個;


$ headers。='From:'。爲 「\ r \ n」 個;
$ headers。='抄送:[email protected]'。爲 「\ r \ n」 個;

郵件($ to,$ subject,$ message,$ headers);

2

你可以嘗試我的函數的PHP郵件。此功能將爲您的電子郵件生成RFC兼容的正文和標題部分。

function buildMime($msg){ 
$num = md5(time()); 
$num = "_001_".$num."_"; 

$headers = "From: SenderName<[email protected]>\n"; 
$headers .= "Return-Path: <[email protected]>\n"; 
$headers .= "Reply-To: <[email protected]>\n"; 
$headers .= "MIME-Version: 1.0\n"; 
$headers .= "Content-Type: multipart/alternative;\n"; 
$headers .= " boundary=\"".$num."\"\n"; 
$headers .= "X-Mailer: PHP v".phpversion()."\n"; 

$body = "This is a multi-part message in MIME format.\n\n"; 

$body1 = "--".$num."\n"; 
$body1 .= "Content-Type: text/plain; charset=utf-8\n"; 
$body1 .= "Content-Transfer-Encoding: 8bit\n\n"; 

$body1 .= trim(strip_tags($msg))."\n"; 
$body1 .= "\n"; 

$body1 .= "--".$num."\n"; 
$body1 .= "Content-Type: text/html; charset=utf-8\n"; 
$body1 .= "Content-Transfer-Encoding: 8bit\n\n"; 

$body1 .= $msg; 
$body1 .= "\n"; 



$bodyx = "--".$num."--\n"; 
return array('body' => $body.$body1.$bodyx, 'headers' => $headers); 
} 
$mime = buildMime("<h1>Hello</h1><p>this is my firs test message</p>"); 
mail('[email protected]', 'Your subject', $mime[body], $mime[headers]); 
?> 
+0

謝謝男人,但如何使用呢?你可以給我一個例子嗎?對不起,因爲我是新手 – merli

+0

嗨,我編輯了我的回覆。希望它能幫助你 –

+0

是的,我現在看到了。謝啦。我會試試這個。 – merli