2012-11-02 2 views
0

다음과 같이 첨부 파일이있는 전자 메일을 보내기위한 Java 코드가 있습니다.MultiPartEmail의 HTML 텍스트 설정

String myEmailId = "[email protected]"; 
String myPassword = "@xx"; 
String senderId = "[email protected]"; 
try { 
    MultiPartEmail email = new MultiPartEmail(); 
    email.setSmtpPort(587); 
    email.setAuthenticator(new DefaultAuthenticator(myEmailId, myPassword)); 
    email.setDebug(true); 
    email.setHostName("smtp.mail.yahoo.com"); 
    email.addTo(senderId); 
    email.setFrom(myEmailId); 
    email.setSubject("The picture"); 
    email.setMsg("<font face='verdana' size='3'>Here is the picture you wanted " 
      + "<table>" 
      + "<tr><th>id</th><th>Name</th></tr>" 
      + "<tr><th>1</th><th>Name 1</th></tr>" 
      + "<tr><th>2</th><th>Name 2</th></tr>" 
      + "<tr><th>3</th><th>Name 3</th></tr>" 
      + "<tr><th>4</th><th>Name 4</th></tr>" 
      + "</table>" 
      + "</font>"); 

    // add the attachment 
    EmailAttachment attachment = new EmailAttachment(); 
    attachment.setPath("/Users/alkandari/Desktop/SMART/Fahim/test_small.pdf"); 
    attachment.setDisposition(EmailAttachment.ATTACHMENT); 
    email.attach(attachment); 

    attachment = new EmailAttachment(); 
    attachment.setPath("/Users/alkandari/Desktop/SMART/Fahim/test.pdf"); 
    attachment.setDisposition(EmailAttachment.ATTACHMENT); 
    email.attach(attachment); 

    // send the email 
    email.send(); 
    System.out.println("Mail sent!"); 
} catch (Exception e) { 
    System.out.println("Exception :: " + e); 
} 

HTML 코드는 그대로 표시됩니다. 내가 무엇을 얻을 이메일에서

<font face='verdana' size='3'>Here is the picture you wanted <table><tr><th>id</th><th>Name</th></tr><tr><th>1</th><th>Name 1</th></tr><tr><th>2</th><th>Name 2</th></tr><tr><th>3</th><th>Name 3</th></tr><tr><th>4</th><th>Name 4</th></tr></table></font> 

어떤 매개 변수가 있는가, 나는 적절한 HTML 형식의 데이터를해야합니다 받게됩니다 이메일입니다.

참고 :

는 사실 내가 Email email = new SimpleEmail();를 사용하여 HTML 부분이 완벽하게 작동하고 물건을 위하고 있었다. 그러나 첨부 파일로 전환해야 할 때 MultiPartEmail email = new MultiPartEmail();을 사용해야했습니다.

답변

1

답변을 얻었습니다.

그냥 MultiPartEmail email = new HtmlEmail();

+0

당신은 또한 태그 – Shurmajee

+0

@MayankSharma가 필요합니다 : HTML, BODY 태그 HtmlEmail'로 필요하지 않습니다를()'자체는 쓰여진 것이 무엇이든''태그 안에 있다는 것을 이해합니다. –

1

당신은 사용할 수 없습니다에 MultiPartEmail email = new MultiPartEmail(); 변경 - email.setMsg ( 을하지만 같이 본문 메시지를 설정합니다 email.addPart ("

MSG BODY

당신의 이름", "text/html과, 캐릭터 세트를 = UTF-8 ")

+2

답을 수정 해주실 수 있겠습니까? – Cleb

1

나는 미래의 나 (그리고 다른 사람들)가 완전한 코드를 볼 수 있도록 내 대답을 제공하고 싶다. 어떤 이유로 든, 아마도 나만이 대답을 불완전하게 찾았거나 OP와 마찬가지로 PDF 첨부 파일이있는 HTML 기반 전자 메일을 보내려고했습니다. 다음은 commons-email 1.4를 사용하여 끝났습니다. 모든 의견을 주시면 감사하겠습니다.

수입 :

import org.apache.commons.mail.DefaultAuthenticator; 
import org.apache.commons.mail.MultiPartEmail; 
import org.apache.commons.mail.EmailAttachment; 

이메일 객체를 구축 (분명히 여기에 실제 세부 사항은 당신에게해야합니다) 이제

MultiPartEmail email = new MultiPartEmail(); 
email.setHostName("smtp.yourhosthere.com"); 
email.setSmtpPort(25); 
// authentication not always needed depending on your environment 
email.setAuthenticator(new DefaultAuthenticator("username", "password")); 
email.setTo("[email protected]"); 
email.setFrom("[email protected]"); 

메시지 세부 사항. 내 HTML에는 HTML 및 BODY 태그가 포함됩니다.

email.setSubject("Your subject here"); 
email.addPart("<div>Your html here</div>", "text/html; charset=UTF-8"); 

이제 첨부

EmailAttachment attachment = new EmailAttachment(); 
attachment.setPath(filepath); 
attachment.setDisposition(EmailAttachment.ATTACHMENT); 

email.attach(attachment); 

이제 이메일

을 보내
email.send();