2011-02-02 107 views
0

我需要每天發送一個基於mysql數據庫中的數據的每日電子郵件。我需要它在HTML中,以便我可以把鏈接放在那裏。我也會在電子郵件中使用圖片。其基本結構爲:使用mysql,html和嵌入圖像的php電子郵件

這裏的名單:

商家名稱(這是一個鏈接) 簡短說明 圖片(這是一個鏈接)

商家名稱(這是一個鏈接) 簡短說明 圖片(這是一個鏈接) 。 。 。

所有數據在MySQL數據庫(雖然「圖像」中的數據庫是一個文件,例如/images/business/image.jpg參考)

我的問題是我應該使用PHPMailer的(我以前從來沒有使用過它),或者使用這樣的事情:

//set up msg 

$msg = "<html><body>Here's the list: <br /><br />"; 
while($i<numofelementsindb){ 
    $business=mysql_result($result, $i,"business"); 
    $description=mysql_result($result, $i,"description"); 
    $msg .= "The business name is <a href='www.example.com'><b>{$business}</b></a> does {$description}<br />\r\n"; 
    $i++; 
} 
$msg .= "</body> 
</html>"; 

//send 

我也不知道如何嵌入在電子郵件中的圖像,因此任何建議,將不勝感激。
您是否也有任何安全建議?

謝謝

回答

0

使用我寫了一個MIME電子郵件類,這裏的代碼做你想要的東西:

require 'class.omime.php'; 
$email = new omime('related'); 

$html = "<html><body>Here's the list: <br /><br />"; 
while($i < numofelementsindb) { 
    $business = mysql_result($result, $i,"business"); 
    $description = mysql_result($result, $i,"description"); 
    $imageFilePath = ''; # path to image file 

    $cid = $email->attachFile($imageFilePath); 
    $html.= "The business name is <a href='www.example.com'><strong>{$business}</strong></a> does {$description}<br />\r\n"; 
    $html.= "<img src=\"cid:{$cid}\" alt=\"Image of {$business}\"/><br /><br />\r\n"; 
    $i++; 
} 
$html.= "</body></html>"; 

$email->attachHTML($html); 
$email->send('[email protected]', 'Daily List of Businesses', 'from: [email protected]'); 

所有的圖像將與電子郵件連接,所以你不必將它們放置在網絡服務器。收件人仍然會被問到是否要顯示圖像。如果你有興趣,請檢查omime source page

0

我建議使用phpmailer,因爲它已經準備好了幾乎所有你需要的方法。儘管如此,您還可以使用簡單的php mail()函數,但請注意,如果您需要一個html郵件,您需要在標題中指定MIME和內容類型,否則它將不工作(它將按原樣顯示標籤)。

$header = 'MIME-Version: 1.0' . "\r\n"; 
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

圖像可以像在網頁中一樣嵌入(<img src=....);請記住,默認情況下許多郵件查看器都配置爲在電子郵件bodys中不加載圖像,要求用戶只在需要時加載它們。並且非常確定這些圖像的來源,因爲如果它們來自用戶,它們將受到xss漏洞的影響。在這種情況下,在輸出到html之前轉義。

相關問題