2017-12-12 2 views
0

첨부 된 pdf로 html 전자 메일을 보내려면 apache commons email 1.4를 사용하고 있습니다. 그러나 내가받은 이메일은Apache commons-email 1.4 HTML 태그를 번역하지 않고 HtmlEmail을 보내고 첨부 파일을 볼 수 없습니다.

<p>B600003292</p> 
MIME-Version: 1.0 
Content-Type: multipart/mixed; 
     boundary="----=_Part_0_407006327.1513053130072" 

------=_Part_0_407006327.1513053130072 
Content-Type: text/html; charset=UTF-8 
Content-Transfer-Encoding: 7bit 

<html><p>asdfb B600003292</p></html> 
------=_Part_0_407006327.1513053130072 
Content-Type: application/octet-stream; name=eee1_12122017043204284.pdf 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; filename=eee1_12122017043204284.pdf 

JVBERi0xLjQKJeLjz9MKMyAwIG9iaiA8PC9MZW5ndGggMTM0L0ZpbHRlci9GbGF0ZURlY29kZT4+ 
c3RyZWFtCnicK+RyCuEyUDC3NFIISeFyDeEK5CrkMtAzMDY3VSjnMlLwAkpmcRkaKPhyRccaKKRw 
mZoomBsZKORymZpagFk5UJaegQmIbYLKBMlncIVz5QHNAcGidJCF+m6GCoZAG9O4DMGihgpAxWaW 
pnoWhgohuVwaxYkpaSCsGZIFc1MgFwCOPyOjCmVuZHN0cmVhbQplbmRvYmoKMSAwIG9iajw8L1Bh 
cmVudCA0IDAgUi9Db250ZW50cyAzIDAgUi9UeXBlL1BhZ2UvUmVzb3VyY2VzPDwvUHJvY1NldCBb 
L1BERiAvVGV4dCAvSW1hZ2VCIC9JbWFnZUMgL0ltYWdlSV0vRm9udDw8L0YxIDIgMCBSPj4+Pi9N 
ZWRpYUJveFswIDAgNjEyIDc5Ml0+PgplbmRvYmoKMiAwIG9iajw8L0Jhc2VGb250L1RpbWVzLVJv 
bWFuL1R5cGUvRm9udC9FbmNvZGluZy9XaW5BbnNpRW5jb2RpbmcvU3VidHlwZS9UeXBlMT4+CmVu 
ZG9iago0IDAgb2JqPDwvVHlwZS9QYWdlcy9Db3VudCAxL0tpZHNbMSAwIFJdPj4KZW5kb2JqCjUg 
MCBvYmo8PC9UeXBlL0NhdGFsb2cvUGFnZXMgNCAwIFI+PgplbmRvYmoKNiAwIG9iajw8L1Byb2R1 
Y2VyKGlUZXh0IDIuMS4wIFwoYnkgbG93YWdpZS5jb21cKSkvTW9kRGF0ZShEOjIwMTcxMjExMjMz 
MjEwLTA1JzAwJykvQ3JlYXRpb25EYXRlKEQ6MjAxNzEyMTEyMzMyMTAtMDUnMDAnKT4+CmVuZG9i 
agp4cmVmCjAgNwowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAyMTYgMDAwMDAgbiAKMDAwMDAw 
MDM3MiAwMDAwMCBuIAowMDAwMDAwMDE1IDAwMDAwIG4gCjAwMDAwMDA0NjEgMDAwMDAgbiAKMDAw 
MDAwMDUxMSAwMDAwMCBuIAowMDAwMDAwNTU1IDAwMDAwIG4gCnRyYWlsZXIKPDwvUm9vdCA1IDAg 
Ui9JRCBbPGI0NzlhYjhiZWY0ZmM4Y2RhMWVjZDZjMzM2NTM0NDFhPjxlMjU1M2M4Y2UyMGM3ODk2 
NzkxYmZjZGQzYjc5YzJhZj5dL0luZm8gNiAwIFIvU2l6ZSA3Pj4Kc3RhcnR4cmVmCjY4NgolJUVP 
Rgo= 
------=_Part_0_407006327.1513053130072-- 

위의 이메일에 3 가지 문제가 있습니다.

1) <p>B600003292</p>은 제목의 일부 여야하며 "title is <p>B600003292</p>"이어야합니다. 그러나 지금은 제목이 "title is"이며, 보시다시피 <p>B600003292</p>이 본문의 첫 번째 줄로 표시되었습니다. 제목을 HTML 형식으로 만들려면 어떻게해야합니까?

2) 예기치 않은 내용이 전자 메일 본문에 쓰여지고 실제로 본문 내용 인 "<html><p>asdfb B600003292</p></html>"이이 부분이 아니며 html 형식의 본문으로 전송되지 않습니다.

3) 첨부 파일이 없습니다. 하단의 암호화 된 코드가 첨부 파일이라고 생각합니다. 왜 그것이 pdf 대신 본문 내용으로 표시되는지 확실하지 않습니다.

아래 코드는 제 코드입니다.

public void send(EmailType emailType) throws EmailException, MalformedURLException { 
     org.apache.commons.mail.Email email; 
     if (emailType == EmailType.SimpleEmail) { 
      email = new SimpleEmail(); 
     } else if (emailType == EmailType.MultiPartEmail) { 
      email = new MultiPartEmail(); 
      loadEmailAttachments(email); 
     } else { 
      email = new HtmlEmail(); 
      loadEmailAttachments(email); 
     } 
     email.setHostName(host); 
     email.setSmtpPort(Integer.valueOf(port)); 
     //email.setAuthenticator(new DefaultAuthenticator(null, null));//.setAuthentication(new()); 
     email.setCharset("utf-8"); 
     email.setFrom(from.getEmailAddress(), from.getDisplayName()); 
     for (TemplateEngineEmailer receiver : to) { 
      email.addTo(receiver.getEmailAddress(), receiver.getDisplayName()); 
     } 

     email.setSubject(subject); 
     if (emailType == EmailType.HtmlEmail) { 
      ((HtmlEmail) email).setHtmlMsg(body); 
     } else { 
      email.setMsg(body); 
     } 
     email.send(); 
    } 

private void loadEmailAttachments(org.apache.commons.mail.Email email) throws EmailException, MalformedURLException { 
    List<EmailAttachment> attachments = getEmailAttachment(); 
    if (attachments != null && !attachments.isEmpty()) { 
     for (EmailAttachment attachment : attachments) { 
      ((HtmlEmail) email).attach(attachment); 
     } 
    } 
} 

private List<EmailAttachment> getEmailAttachment() throws MalformedURLException { 
    List<EmailAttachment> emailAttachments = new ArrayList<>(); 
    for (TemplateEngineAttachment attachment : attachments) { 
     EmailAttachment emailAttachment = new EmailAttachment(); 
     if (attachment.isLocalFile()) { 
      emailAttachment.setPath(attachment.getPath()); 
     } else { 
      emailAttachment.setURL(new URL(attachment.getPath())); 
     } 
     emailAttachment.setDisposition(EmailAttachment.ATTACHMENT); 
     emailAttachment.setDescription(attachment.getDescription()); 
     emailAttachment.setName(attachment.getName()); 
     emailAttachments.add(emailAttachment); 
    } 
    return emailAttachments; 
} 

답변

0

모든 것이 유실 되었음이 밝혀졌습니다. 주제에있는 모든 HTML 태그 <p>입니다. 일단 제거하면 모든 것이 잘 작동합니다.