2015-07-11 80 views
1

當我收到由JavaMail API發送的電子郵件時,css不起作用並且只呈現html。css樣式在javax郵件api中不起作用

HTML代碼

 <!doctype html> 
    <html lang="en"> 
    <head> 
     <meta charset="utf-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

     <title>title</title> 

     <style> 

     .gradiente{ 
      background: -webkit-linear-gradient(#FFFCE8, #FFF8AF); /* For Safari 5.1 to 6.0 */ 
      background: -o-linear-gradient(#FFFCE8, #FFF8AF); /* For Opera 11.1 to 12.0 */ 
      background: -moz-linear-gradient(#FFFCE8, #FFF8AF); /* For Firefox 3.6 to 15 */ 
      background: linear-gradient(#FFFCE8, #FFF8AF); /* Standard syntax */ 
      background-repeat: repeat; 

     } 
     a lot of styles below....... I did not paste all of it 
    </style> 
</head> 
    <body class='gradiente'> 
     ....html stuff 
    </body> 
</html> 

JAVA API

// Get system properties 
      Properties properties = System.getProperties(); 

      // Setup mail server 
      properties.setProperty("mail.smtp.auth", "true"); 
      properties.setProperty("mail.smtp.starttls.enable", "true"); 
      properties.setProperty("mail.smtp.host", host); 
      properties.setProperty("mail.smtp.port", porta); 

      MailcapCommandMap mc = (MailcapCommandMap)CommandMap.getDefaultCommandMap(); 
      mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
      mc.addMailcap("text/css;; x-java-content-handler=com.sun.mail.handlers.text_css"); 
      mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
      mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
      mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed"); 
      mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 
      CommandMap.setDefaultCommandMap(mc); 

      Session session = Session.getInstance(properties, 
        new javax.mail.Authenticator() { 
        protected PasswordAuthentication getPasswordAuthentication() { 
         return new PasswordAuthentication(userName, passWord); 
        } 
        }); 

      try{ 
      // Create a default MimeMessage object. 
       MimeMessage message = new MimeMessage(session); 

       // Set From: header field of the header. 
       message.setFrom(new InternetAddress(from)); 

       // Set To: header field of the header. 
       message.addRecipient(Message.RecipientType.TO, 
             new InternetAddress(to)); 

      if(cc != null){ 
        Iterator<String> ccIt = cc.iterator(); 
        while (ccIt.hasNext()) { 
        String itemcc = ccIt.next(); 
        message.addRecipient(Message.RecipientType.CC, 
          new InternetAddress(itemcc)); 
        } 
      } 

       // Create the message part 
       BodyPart messageBodyPart = new MimeBodyPart(); 

       // Set Subject: header field 
       message.setSubject(subject); 

       // Send the actual HTML message, as big as you like 
       Iterator<String> it = content.iterator(); 
       String textoConteudo=""; 
       while (it.hasNext()) { 
       String item = it.next(); 
       textoConteudo = textoConteudo + item; 
       } 
       messageBodyPart.setContent(textoConteudo, 
           "text/html; charset=iso-8859-1"); 

      // Create a multipar message 
       Multipart multipart = new MimeMultipart(); 

      // Set text message part 
       multipart.addBodyPart(messageBodyPart); 

      // Part two is attachment 
       if(fileName !=null){ 
        Iterator<String> itFN = fileName.iterator(); 
        while (itFN.hasNext()) { 
        String arq = itFN.next(); 
        messageBodyPart = new MimeBodyPart(); 
        DataSource source = new FileDataSource(arq); 
        messageBodyPart.setDataHandler(new DataHandler(source)); 
        messageBodyPart.setFileName(arq); 
        multipart.addBodyPart(messageBodyPart); 
        } 
       } 
       // Send the complete message parts 
       message.setContent(multipart); 

      // Send message 
      Transport.send(message); 

當我收到新郵件和Gmail或Outlook中打開它,只有HTML代碼的呈現方式。 CSS樣式不應用。查閱全文...

+0

我認爲HTML郵件從'body'標籤開始,並且不能讀取它必須在標籤樣式中的CSS樣式自己 –

回答

2

一般來說,電子郵件客戶端不會讓你使用任何任意的CSS。 This article將幫助您瞭解哪些客戶端支持哪些內容。

0

我想在HTML Java郵件從body標籤開始,而不能讀取CSS樣式它必須在標籤的樣式是自
試試這個

<html> 
    <body style=" background: -webkit-linear-gradient(#FFFCE8, #FFF8AF); /* For Safari 5.1 to 6.0 */   background: -o-linear-gradient(#FFFCE8, #FFF8AF); /* For Opera 11.1 to 12.0 */   background: -moz-linear-gradient(#FFFCE8, #FFF8AF); /* For Firefox 3.6 to 15 */   background: linear-gradient(#FFFCE8, #FFF8AF); /* Standard syntax */   background-repeat: repeat;"> 
     ....html stuff 
    </body> 
</html> 
+0

我有一個大的HTML和許多CSS樣式來應用。它將無法合併所有我的CSS樣式身體標記 – Al2x

+0

我正在使用這種方法,因爲我試圖在你想要什麼之前,但沒有結果。另請參閱http://stackoverflow.com/questions/24799647/some-css-styles-not-applied-in-html-when-it-as-a-mail-using-javax-mail –