我試圖使用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」粘貼的,但這在我的代碼中不起作用。 感謝您的幫助。非常感謝。這一切都很有幫助。
如果你的服務器運行的是Postfix,你最好使用'PHP_EOL'而不是'\ r \ n'作爲行結束符。 – CD001
我在localhost運行這個。我如何看到Postfix裏面? – merli