2011-10-21 101 views
2

不知道什麼是錯,我一定要設置我的標題,所以可能有什麼不對。我擁有的郵件是巨大的,所以我把這個小測試者放在一起,當我收到電子郵件時,所有的html標籤都存在,但沒有格式化發生。我很好奇,如果這是我設置標題的方式有問題,或者我需要更多信息。我搜索了論壇,看起來大多數人遇到的問題是他們沒有添加HTML內容類型,但是這裏添加了這個內容,所以任何幫助都很棒。我的HTML電子郵件沒有被格式化爲HTML?

感謝

好了,所以我已經簽出一些在線教程
http://www.webhostingtalk.com/showthread.php?t=416467
http://css-tricks.com/2866-sending-nice-html-email-with-php
http://www.w3schools.com/php/func_mail_mail.asp

<?php 
session_start(); 
if (isset($_SESSION['new_count'])) //counts how many fake emails i send myself 
{ 
    $count = $_SESSION['new_count']; 
} 
else 
{ 
    //first time 
    $count = 0; 
} 

$to = '[email protected]'; 
$subject = 'email test'; 
$message = '<html><head></head><body>'; 
$message .= '<h1>this is an email test</h1>'; 
$message .= '<br />does new line work?<br />'; 
$message .= 'how about <b>bold</b> and <strong>strong</strong>?<br />'; 
$message .= '</body></html>'; 
//updated my header to include mime-version 
$mailheader = 'MIME-Version: 1.0' . '\r\n'; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . '\r\n'; 
$mailheader .= 'from: [email protected] <[email protected]>' . '\r\n'; 

$yay = mail($to,$subject,$message,$mailheader); 

if($yay) 
{ 
    echo 'woot'; 
    $count++; 
    $_SESSION['new_count'] = $count; 
    echo '<br>Emails Sent: '.$count; 
} 
else 
{ 
    echo 'no woot'; 
} 
?> 

我的頭更新到W3建議的形式和其他一些地方。我猜我的頭是問題...這仍然輸出普通文本不是HTML不知道問題是什麼。至於這個腳本的結構,它不是我真正的郵件程序腳本,它是一個帶有計數器的測試腳本,所以我知道在測試會話期間需要注意多少封電子郵件。

+5

這不是發送HTML電子郵件的方式。請參閱堆棧溢出的或谷歌的搜索,以瞭解它是如何完成的 –

+0

Pekka,感謝您的信息。我做了谷歌搜索,並在問我的問題之前查看了一些Stack Overflow的建議主題。我發現的大部分內容都是聲明標題的問題,但根據我發佈的教程,我的標題看起來應該是這樣,對於搞垮了電子郵件的東西感到好奇。 – Brodie

+0

您並未使用「」,「」和「」標籤作爲初學者。電子郵件客戶端很挑剔。 – zzzzBov

回答

5

嘗試對您的\ r \ n使用雙引號。

$mailheader = 'MIME-Version: 1.0' . "\r\n"; 
$mailheader .= 'Content-type: text/html; charset=ISO-8859-1' . "\r\n"; 
$mailheader .= 'from: [email protected] <[email protected]>' . "\r\n"; 
+0

+1這很可能是解決方案,因爲一切似乎都是按順序進行的。 – Herbert

+0

這是解決方案,我沒有意識到我不得不雙引號的返回和換行符。非常感謝。當我嘗試發送普通文本電子郵件時,這是否是我的換行符不起作用的原因? – Brodie

+0

是的,任何轉義字符都應該用雙引號括起來。 –

0

據我所見,「From」應該在「Content-type」之前。最重要的是你不應該需要「MIME」頭文件。

1

我建議您使用Swift,這使得使用PHP發送電子郵件變得非常容易。一個更好的解決辦法是使用類似Postmarkapp,其中除了具有優異的圖書館,也可以確保您的郵件不會停留在垃圾郵件過濾器等

例與斯威夫特:

require_once 'lib/swift_required.php'; 

//Create the message 
$message = Swift_Message::newInstance() 

    //Give the message a subject 
    ->setSubject('Your subject') 

    //Set the From address with an associative array 
    ->setFrom(array('[email protected]' => 'John Doe')) 

    //Set the To addresses with an associative array 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 

    //Give it a body 
    ->setBody('Here is the message itself') 

    //And optionally an alternative body 
    ->addPart('<q>Here is the message itself</q>', 'text/html') 

    //Optionally add any attachments 
    ->attach(Swift_Attachment::fromPath('my-document.pdf')) 
    ; 
+0

我很感激,我可能會在我的個人網站上使用郵件應用程序/庫集成,但我不想在這個客戶端網站上有一堆額外的東西,他會非常使用外部腳本免費或不是,不知道爲什麼。 – Brodie

+0

@Brodie:很抱歉聽到這個消息,[這是給你鼓勵的東西](http://clientsfromhell.net/):) – Znarkus

+0

這真是太棒了! – Brodie