2014-07-17 3 views
5

Javax 메일 API를 사용하여 형식화 된 html을 메일로 보내려고합니다. 사용 메일 폴더의 유틸리티 코드는일부 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> -block에서 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 method(); 예 :

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

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

//이 CSS 코드는 메시지 본문에 영향을주지 않습니다.

+0

안녕하세요. 스택 오버플로에 오신 것을 환영합니다. 주변을 둘러보고 [둘러보기]를 읽고 [도움]을 읽으십시오. [답변]에 대해서도 읽을 수 있습니다. – Sampada