2010-07-28 67 views
2

我正在爲有能力發送電子郵件的客戶端創建Web應用程序。我爲我的文本編輯器使用了TinyMCE,它工作得非常好。我正在使用PHP Swiftmailer的sendmail()來處理郵件的實際發送。 Swiftmailer也很好地工作。PHP sendmail()格式不保留

我遇到的唯一問題是,當我收到電子郵件(在Gmail中)時,格式不能正確呈現。我在電子郵件正文中收到以下內容:

<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href=\\\"http://www.google.com\\\">Google</a>.</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>&nbsp;</p>\r\n<p>Line breaks!<br /> <br /> Shift breaks!</p>\r\n<p>&nbsp;</p>\r\n<p>Bye!</p> 

鏈接呈現,就是這樣。我錯過了什麼?

謝謝!

回答

3

檢查出如何設置HTML內容類型的文檔中的第二和第三代碼塊...

http://swiftmailer.org/docs/header-parameterized

+0

謝謝。將消息對象中的字符集設置爲與將其設置在標題中不同? – littleK 2010-07-28 19:32:49

+0

說實話,我不能肯定地說,我對Swift Mailer並不熟悉,我只知道你必須設置標題,所以谷歌搜索他們的文檔如何做到這一點。我想,在一天結束的時候,他們可以歸結爲同樣的事情,但有一次可能會覆蓋另一個。 – 2010-07-28 20:29:14

2

您需要以實際的HTML格式發送您的電子郵件。而是發送HTML的純文本。鏈接呈現是因爲Google很好,並自動鏈接它認爲是有效的網址。

我強烈推薦Pear郵件類。有便利的功能來設置HTML和純文本郵件正文。

0

我會做你的情況是這樣的:

<?php 

$headers = "From: Me <[email protected]>\r\n"; 
$headers .= "X-Mailer: PHP/".phpversion()."\r\n"; 
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; //States it is HTML Content 
$headers .= "Content-Transfer-Encoding: 7bit\r\n"; 

$subject = "This is my subject"; 

$message = <<<MESS 
<p>Oh Hello! This is a test <strong>message</strong>. Here is a link: <a href="http://www.google.com">Google</a>.</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>&nbsp;</p> 
<p>Line breaks!<br /> <br /> Shift breaks!</p> 
<p>&nbsp;</p> 
<p>Bye!</p> 
MESS; 

if(mail("", $subject, $message, $headers) == True){ 
    echo "Message Sent"; 
} else { 
    echo "Message NOT Sent" 
} 

?> 

注意:GMAIL真的很挑剔它如何顯示電子郵件。最好創建一個Gmail帳戶,並測試它自己的外觀。 Hotmail是類似的