2014-04-14 3 views
0

사용자 개입없이 자동으로 이미지를 보내는 Android 앱을 만들려고합니다.javax.mail을 사용하여 Java에서 이메일을 보낼 때 예외가 발생했습니다.

이렇게하려면 javax.mail 병 (및 activation.jaradditional.jar)을 사용하고 있습니다. javax.mail.MessagingException : IOException이 전송하는 동안 메시지 나는 다음과 같은

Properties props = new Properties(); 
props.put("mail.smtp.auth", true); 
props.put("mail.smtp.starttls.enable", true); 
props.put("mail.smtp.host", "smtp.gmail.com"); 
props.put("mail.smtp.ssl.enable",true); 
props.put("mail.smtp.port", "465"); 

Session session = Session.getInstance(props,new Authenticator() { 
    protected PasswordAuthentication getPasswordAuthentication() { 
    return new PasswordAuthentication(USER,PASS); 
    } 
}); 

MimeMessage message = new MimeMessage(session); 
message.setFrom(new InternetAddress("*******@gmail.com")); 
message.setSubject("Email Subject"); 

message.addRecipient(Message.RecipientType.TO, 
        new InternetAddress("******@gmail.com")); 

MimeBodyPart messageBodyPart = new MimeBodyPart(); 
Multipart multipart = new MimeMultipart(); 
multipart.addBodyPart(messageBodyPart); 
messageBodyPart = new MimeBodyPart(); 
messageBodyPart.setContent("<img src=\"image.gif\"/>","text/html"); 
multipart.addBodyPart(messageBodyPart); 
messageBodyPart = new MimeBodyPart(); 
FileDataSource source = new FileDataSource(new File(ruta)); 
messageBodyPart.setDataHandler(new DataHandler(source)); 
messageBodyPart.setFileName("picture.gif"); 
messageBodyPart.setDisposition("inline"); 
multipart.addBodyPart(messageBodyPart); 
message.setContent(multipart); 
Transport.send(message); 

이 코드를 실행하면, 나는 다음과 같은 오류를 얻을

W/System.err에 (24907)를하고 있어요 ;
W/System.err (24907) : 중첩 예외는
W/System.err (24907) : javax.activation.UnsupportedDataTypeException : MIME 유형 multipart/mixed에 대한 개체 DCH가 없습니다.
경계 : "---- = _ Part_0_1095625208.1397499270313"
W/System.err (24907) : com.sun.mail.smtp.SMTPTransport.sendMessage (SMTPTransport.java) : 1182)
W/System.err (24907) : javax.mail.Transport.send0 (Transport.java:254)
W/System.err (24907) : at javax.mail.Transport.send .java : 124)

어떻게 해결할 수 있습니까?

나는 Debian 64-bits 컴퓨터와 Eclipse Java EE IDE for Web Developers - Kepler을 사용하고 있습니다. 솔루션에 필요한 경우 ...

+0

사용중인 Java 메일 API 버전은 무엇입니까? –

답변

1

DCH은 데이터 콘텐츠 처리기입니다. MimeType 처리기가 올바르게 구성되지 않은 것처럼 보입니다.

최신 1.5.* 버전의 Java 메일 API를 다운로드하여 사용할 수있는 경우이 오류가 해결되어야합니다.

그렇지 않으면 코드 내에서 MimeType 처리기를 설정하는 명령문을 실행할 수 있습니다.

메일 모듈에 다음 코드 스 니펫을 추가하고 Session 메일에 사용할 수 있습니다.

MailcapCommandMap mailcapCommandMap = new MailcapCommandMap(); 
mailcapCommandMap.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed; x-java-fallback-entry=true"); 
CommandMap.setDefaultCommandMap(mailcapCommandMap); 

당신은를 참조

mailcapCommandMap.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain"); 
mailcapCommandMap.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html"); 
mailcapCommandMap.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml"); 
mailcapCommandMap.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822"); 

MimeTypes 추가

이를 확장 할 수

외에도이 방법에서,이 클래스에 전체 문서를 읽어보십시오.

+0

감사합니다.이 코드는 결국 작동합니다. Java 메일 버전 1.5를 사용하고있었습니다.1 그러나 그 코드와 함께 작동하지 않았다. –