2014-12-16 2 views
0

첨부 된 이메일을 보내려고 메신저,하지만 말을 계속 :Java mailto 불법 문자 콜론?

Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Illegal character in opaque part at index 64: mailto:[email protected]?subject=ThePDFFile&attachment=C:\Users\Rascal\AppData\Local\Temp\FreelancerList-16-12-2014_09-227568200505392670736.doc 

자바 코드 :

Desktop desktop = Desktop.getDesktop(); 
     String message = "mailto:[email protected]?subject=ThePDFFile&attachment=\""+path; 
     URLEncoder.encode(message, "UTF-8"); 
     URI uri = URI.create(message); 
     desktop.mail(uri);  

은 콜론 오른쪽되어야 하는가? 그런데 왜 ???

+0

경로가 "C : \ Users \ Rascal \ AppData \ Local \ Temp \ FreelancerList-16-12-2014_09-227568200505392670736.doc"입니다. – aurelius

+0

오류 메시지에 문제가 인덱스 64가 아니라 인덱스 4 'mailto :'는 문제가 아닙니다. –

+0

경로가 어떻게 정의되어 있습니까? – SMA

답변

3

URLEncoder.encode으로 전화를 걸었지만 결과는 무시됩니다. 난 당신이 이런 식으로 뭔가를 달성하기 위해 노력하고 있었다 의심 :

String encoded = URLEncoder.encode(message, "UTF-8"); 
URI uri = URI.create(encoded); 

... 그 시점에서 당신이뿐만 아니라 mailto 부분 후 콜론을 인코딩해야하지만. 단지 값을 인코딩도

String query = "subject=ThePDFFile&attachment=\""+path; 
String prefix = "mailto:[email protected]?"; 
URI uri = URI.create(prefix + URLEncoder.encode(query, "UTF-8")); 

또는 : 나는 당신이 정말 같은 것을 할 생각

String query = "subject=" + URLEncoder.encode(subject, "UTF-8"); 
    + "&attachment=" + URLEncoder.encode(path, "UTF-8")); 
URI uri = URI.create("mailto:[email protected]?" + query); 

을 ... 또는 물론, 별도로 여러 다른 부분에서 URI을 만들 수 있습니다.

+0

그것을 변경, 지금은 말한다 : 스레드 "AWT-EventQueue의-0"java.lang.IllegalArgumentException가에서 예외 : URI 방식이 아닌 "흔한" 에서입니다 "desktop.mail (uri);" –

+0

@DenisHartwood : 음, 인코딩이 필요한 부분 만 인코딩하는 것과 관련된 나머지 대답을 읽었습니까? –

+0

오류 후, 예 : D 이제는 작동하지만 내 전자 메일 클라이언트에는 제목과 첨부 파일이 없습니다 ... –