2010-06-02 1 views
1

전자 메일 확인을위한 신청서가 있습니다. 이메일 부분은 Commons Mail API를 사용합니다. 메일을 보내는 간단한 코드는 아래와 같습니다.Tomcat에서 Java 메일 첨부 파일이 작동하지 않습니다.

import org.apache.commons.mail.*; 
... 
// Create the attachment 
EmailAttachment attachment = new EmailAttachment(); 
attachment.setURL(new URL("http://cashew.org/doc.pdf")); 
attachment.setDisposition(EmailAttachment.ATTACHMENT); 
attachment.setDescription("Testing attach"); 
attachment.setName("doc.pdf"); 

// Create the email message 
MultiPartEmail email = new MultiPartEmail(); 
email.setHostName("mail.cashew.com"); 
email.addTo("[email protected]"); 
email.setFrom("[email protected]"); 
email.setSubject("Testing); 
email.setMsg("testing message"); 

// add the attachment 
email.attach(attachment); 

// send the email 
email.send(); 
Eclipse에서이 응용 프로그램을 실행할 때 문제가없는 첨부 파일과 함께 전자 메일이 전송됩니다. 하지만 Tomcat 서버에 응용 프로그램을 배포하면 (

모두 버전 5 & 6 시도 없음) 전자 메일은 아래 내용으로 전송됩니다.

------=_Part_0_25002283.1275298567928 
Content-Type: text/plain; charset=us-ascii 
Content-Transfer-Encoding: 7bit 

testing 


Regards, 

los 

------=_Part_0_25002283.1275298567928 
Content-Type: application/pdf; name="doc.pdf" 
Content-Transfer-Encoding: base64 
Content-Disposition: attachment; 
filename="doc.pdf" 
Content-Description: Testing attach 

JVBERi0xLjQNJeLjz9MNCjYzIDAgb2JqDTw8L0xpbmVhcml6ZWQgMS9MIDMxMzE4Mi9PIDY1L0Ug 
Mjg2NjY5L04gMS9UIDMxMTgwMi9IIFsgMjgzNiAzNzZdPj4NZW5kb2JqDSAgICAgICAgICAgICAg 
DQp4cmVmDQo2MyAxMjcNCjAwMDAwMDAwMTYgMDAwMDAgbg0KMDAwMDAwMzM4MCAwMDAwMCBuDQow 
MDAwMDAzNTIzIDAwMDAwIG4NCjAwMDAwMDQzMDcgMDAwMDAgbg0KMDAwMDAwNTEwOSAwMDAwMCBu 
DQowMDAwMDA2Mjc5IDAwMDAwIG4NCjAwMDAwMDY0MTAgMDAwMDAgbg0KMDAwMDAwNjU0NiAwMDAw 
MCBuDQowMDAwMDA3OTY3IDAwMDAwIG4NCjAwMDAwMDkwMjMgMDAwMDAgbg0KMDAwMDAwOTk0OSAw 
MDAwMCBuDQowMDAwMDExMDAwIDAwMDAwIG4NCjAwMDAwMTIwNTkgMDAwMDAgbg0KMDAwMDAxMjky 
MCAwMDAwMCBuDQowMDAwMDEyOTU0IDAwMDAwIG4NCjAwMDAwMTI5ODIgMDAwMDAgbg0KMDAwMDAx 
....... 
CnN0YXJ0eHJlZg0KMTE2DQolJUVPRg0K 
------=_Part_0_25002283.1275298567928-- 

내가 주목 한 것 중 하나는 헤더 정보가 TO 및 Subject 값을 표시하지 않는다는 것입니다. 흠, 꽤 귀엽다. 위의 내용은 DEBUG이 생성되지 않았 음을 나타내야합니다. Outlook 클라이언트에서 수신되는 실제 메시지입니다.

나를 도와 줄 수있는 사람이 있습니까?

업데이트 : 응용 프로그램이 매우 간단합니다. 파트와 텍스트 메시지를 별도의 파트로 첨부하십시오.

public final void Email(String from, String to, String cc, 
      String subject, String message, String doc, String bcc) { 

     MultiPartEmail email = new MultiPartEmail(); 

    try { 

     if (!(doc == null)) { 
        EmailAttachment attachment = new EmailAttachment(); 
        attachment.setURL(new URL("http://cashew.org/doc.pdf")); 
     attachment.setDisposition(EmailAttachment.ATTACHMENT); 
     attachment.setDescription("Testing attach"); 
     attachment.setName("doc.pdf"); 
        email.attach(attachment); 
     } 


     email.setHostName("mail.cashew.com"); 

     // [ Set Header details 
     email.setTo(getAddress(to)); 
     email.setFrom(from); 
     email.setSubject(subject); 


     if (!(cc == null)) { 
       eEmail.setCc(getAddress(cc)); 
     } 

     if (!(bcc == null)) { 
      email.setBcc(getAddress(bcc)); 
     } 

     email.setMsg(message); 

     email.send(); 


    } catch (Exception ex) { 
     ex.printStackTrace(); 
    } 
} 

누가 무슨 일이 일어나는지 알고 있습니까?

+0

나는 우리에게 모든 것을 보여줄 것이라고 생각하지 않습니다. 예를 들어 멀티 파트 메시지의 첫 번째 부분에 대한 코드가 표시되지 않습니다. –

+0

@Alexander - 위에 표시된 이메일 전송을 수행하는 방법. – Bitmap

답변

0

This was the issue

원인 : 기술 된 문제는 아파치 CXF 2 공리의 전이 의존성에 의해 발생합니다.

해결 :이 문제를 해결 제로니모 - javamail_1.4_spec 빌드에서 제외하고, 단지 모두 javax의 메일 1.4.x.jar에 의존합니다.

<!--For Apache CXF 2 Project: Do this Exclude--> 
<dependency>  
    <groupid>org.apache.cxf</groupid> 
    <artifactid>cxf-rt-frontend-jaxws</artifactid>  
    <version>2.2.6</version>  
    <exclusions>   
     <exclusion>    
     <groupid>org.apache.geronimo.specs</groupid>    
     <artifactid>geronimo-javamail_1.4_spec</artifactid>   
     </exclusion> 
    <exclusion> 
     <groupid>org.apache.geronimo.specs</groupid> 
     <artifactid>geronimo-activation_1.1_spec</artifactid> 
    </exclusion>  
</exclusions> 
</dependency> 

<!--For Axis2 Project with Axiom Dependency: Do this Exclude--> 
<dependency> 
    <groupid>org.apache.ws.commons.axiom</groupid> 
    <artifactid>axiom-api</artifactid> 
    <version>1.2.8</version> 
    <exclusions>  
    <exclusion> 
     <groupid>org.apache.geronimo.specs</groupid> 
     <artifactid>geronimo-activation_1.1_spec</artifactid> 
    </exclusion> 
    <exclusion> 
     <groupid>org.apache.geronimo.specs</groupid> 
     <artifactid>geronimo-javamail_1.4_spec</artifactid> 
    </exclusion> 
    </exclusions> 
</dependency>