2014-07-17 58 views
5

我試圖使用Javax郵件API將格式化的html作爲郵件發送。使用 郵件util的代碼是某些CSS樣式不適用於html,當它作爲使用javax郵件的郵件時

Message message = new MimeMessage(session); 
message.setFrom(new InternetAddress(from)); 
message.setHeader("Auto-Submitted", "auto-generated"); 
message.setReplyTo(InternetAddress.parse(commaSeperatedReplyTo)); 

Multipart multipart = new MimeMultipart(); 
    if (body != null) { 
     MimeBodyPart messageBodyPart = new MimeBodyPart(); 
     messageBodyPart.setContent(body, "text/html;charset=utf-8"); 
     multipart.addBodyPart(messageBodyPart); 

    } 
message.setContent(multipart); 

和HTML身體產生的是

<html> 
    <body> 
     <style type="text/css"> 

      #content ul li{ 
       display:inline !important; 
       float:left; 
       padding: 7px; 
       margin-right: 4px; 
       font-style: italic; 

      } 
     </style> 

     <font face ="Arial" size=4> <U>DESCRIPTION</U>:Test </font><br/><br/>      
      <div id="content">    
       <ul> 
         <li> component_id</li> 
         <li> component_type_id</li> 
         <li> name</li> 
         <li> update_user</li> 
         <li> update</li> 
         <li> key</li> 
         <li> field</li> 
       </ul>      

      </div> 
    </body> 
</html>  

我期待這顯示在線,而不是上下。我也在小提琴中測試了生成的html。按預期工作。但是,在郵件中,我將它列爲正常列表。爲什麼內聯顯示不適用於電子郵件?

需要幫助

+0

這可能與您的代碼無關,但事實上您使用的郵件客戶端不支持它。 – Thys

+0

由於斜體樣式的應用,文字以'斜體'出現 –

+0

@MrThys那麼該怎麼辦?我需要它,任何解決方法? –

回答

4

電子郵件客戶往往不遵循標準。像gMail這樣的客戶甚至會忽略<style>區塊中的CSS聲明。 CampaignMonitor有關於如何創建大多數客戶端支持的HTML電子郵件的一些很好的資源。

您應該將版式轉換爲這樣的事情(使用表!):

<html> 
    <body> 
     <font face="Arial" size=4><U>DESCRIPTION</U>:Test</font> 
     <br/> 
     <br/> 
     <table> 
      <tr> 
       <td>component_id</td> 
       <td>component_type_id</td> 
       <td>name</td> 
       <td>update_user</td> 
       <td>update</td> 
       <td>key</td> 
       <td>field</td> 
      </tr> 
     </table> 
    </body> 
</html> 

然後你就可以使用樣式內聯CSS表/細胞。

+0

是的..完成了這個。感謝您的迴應。保存我無用的努力:) –

0

如何使用CSS代碼setContent方法(); 例如:

String css =「body {background-repeat:no-repeat;}」;

MimeBodyPart messageBodyPart = new MimeBodyPart(); messageBodyPart.setContent(css,「text/html」);

//此CSS代碼不會影響郵件正文。

+0

你好。歡迎來到Stack Overflow。請環顧四周,參加[導覽],並閱讀[幫助]。你也可以閱讀[答案]。 – Sampada

相關問題