2010-03-29 55 views
1

這裏是我一直在努力的一些代碼,基本上我需要設置一個自動電子郵件發送給用戶後,他們填寫表單,目前它正在做,但HTML不顯示,因爲它應該在電子郵件客戶端內。PHP郵件包含HTML不能正確顯示

我檢查了Gmail,Outlook和Mac郵件,但都沒有正確顯示HTML。

下面是代碼

<?php 
    session_start(); 
    $_SESSION['name'] = $_POST['name']; 
    $name = $_SESSION['name']; 
    $email_1 = $_POST['email_1']; 
    $email_2 = $_POST['email_2']; 
    $email_3 = $_POST['email_3']; 
    $email_4 = $_POST['email_4']; 
    $id_num = $_POST['id_num']; 
    $tel = $_POST['tel']; 
    $email = $_POST['email']; 



    //sets the current date 

    $curDate = date("Y-m-d"); 

    // Example 


    require_once("mailclass/htmlMimeMail.php"); 
    $mail = new htmlMimeMail(); 
    $mail->setSubject("Your submission to MyWebsite!"); 
    $mail->setFrom("MyWebsite <[email protected]>"); 
    $mail->setFrom("MyWebsite <[email protected]>"); 
    $email_address = $email_1 . "," . $email_2 . "," . $email_3 ."," . $email_4 ; 
    $mail->setBcc($email_address); 





    $day = " 
     <body style="'background: #000000; color: #FFFFFF;'"> 
     <div style="'background-image: url(http://www.website.com/images/mailerbg.jpg); width: 900px; height: 839px; margin: 0 auto;'"> 
     <div style="'width: 620px; height: 280px; position: relative; top: 155px; left: 25px;'"> 
       <h1><br>your friend $name<br><br><br></h1> 
      </div>  
     </div> 
     </body>"; 

    $mail->setHTML($day); 
      $result = $mail->send(array()); 

    ?> 

的代碼是相當混亂,從我與它胡鬧了這麼多,但一旦消息的到達,因爲它應該在電子郵件客戶端基本沒有HTML的顯示出來它是目的地,我怎樣才能讓它在郵件客戶端內部顯示爲一個合適的HTML頁面?

我假設我的轉義沒有正確完成,這就是爲什麼沒有顯示它應該如此?

Thanx提前!

回答

3

顯示PHP代碼在這種情況下是無用的。我們需要看到最終生成的電子郵件。

什麼引人注目,雖然是一些錯誤引用:

<body style="'background: #000000; color: #FFFFFF;'"> 

應該

<body style="background: #000000; color: #FFFFFF;"> 

也許能解決它了。

另外,根據this great guide,電子郵件幾乎不支持定位 - 這也可能會干擾佈局。

+0

不錯的anwser,但請記住,使用pekka的代碼時,你必須使用單引號的decleration($ day ='<! - HTML_CODE - >';) – Flatlin3 2010-03-29 21:07:03

+1

@Tim好眼睛!我想知道OP的代碼如何工作,所有嵌套的雙引號? – 2010-03-29 21:13:44

+0

這也是我跳出來的。只需要添加一下,如果你想逃避這些雙引號,只需在引號之前加一個反斜槓,就像這樣:#000000; color:#FFFFFF;'' 這樣,當你輸入雙引號時,你不會過早地關閉你的HTML主體字符串。或者,像Tim說的那樣,你可以把整個字符串括在單引號中,並使用雙引號,就像普通的引號一樣,反之亦然。 – 2010-03-29 22:23:45