2014-07-17 17 views
5

Sto provando a inviare un html formattato come posta usando l'API di posta Javax. La posta util-codice utilizzato èAlcuni stili CSS non applicati in html quando si utilizza come posta usando javax mail

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); 

E il corpo HTML generato ero

<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>  

mi aspetto questo per visualizzare in linea, non su e giù. Ho anche testato l'html generato nel violino. Funzionando come previsto. Ma, per posta, lo sto ricevendo come lista normale. Perché la visualizzazione in linea non funziona nell'e-mail?

bisogno di aiuto

+0

Questo probabilmente non ha nulla a che fare con il tuo codice ma con il fatto che il client di posta che stai utilizzando non lo supporta. – Thys

+0

Il testo viene come 'italic' a causa dello stile corsivo applicato –

+0

@MrThys Cosa fare allora? Ne ho bisogno, qualche soluzione per questo? –

risposta

4

E-mail client spesso non seguire gli standard. Alcuni clienti come gMail ignorano persino le dichiarazioni CSS in un blocco-<style>. CampaignMonitor ha alcune grandi risorse su come creare e-mail HTML supportate dalla maggior parte dei client.

Si dovrebbe convertire il layout per qualcosa di simile (le tabelle di utilizzo!):

<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> 

Quindi è possibile lo stile i tavolo/cellule usando CSS in linea.

+0

Sì .. Completato. Grazie per la risposta. Salvato i miei sforzi inutili :) –

0

Come utilizzare un codice CSS per setContent metodo(); ad esempio:

Stringa css = "body {background-repeat: no-repeat;}";

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

// questo codice css non ha effetto sul corpo del messaggio.

+0

Ciao. Benvenuto in Stack Overflow. Si prega di dare un'occhiata in giro e prendere il [tour], e leggere attraverso [aiuto]. Puoi anche leggere su [risposta]. – Sampada