마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

이메일 첨부파일 받아오기 질문입니다.

0 추천
안녕하세요! 안드로이드 개발중에 질문이 있어 글을 올립니다 ㅠㅠ 
 
이메일 계정에 pop3로 연결하여 메일을 읽어 첨부파일을 받아오는 소스를 JAVA를 이용해서 구현했는데요... 
이걸 android에서 실행 시키니 에러가 발생하네요 ㅠㅠㅠ 
혹시 어떤 문제인지 알 수 있을까요...? 
 

 


log.txt 
07-09 18:54:01.786: E/AndroidRuntime(28212): FATAL EXCEPTION: main 
07-09 18:54:01.786: E/AndroidRuntime(28212): Process: com.example.test, PID: 28212 
07-09 18:54:01.786: E/AndroidRuntime(28212): java.lang.VerifyError: com/example/test/MainActivity 
07-09 18:54:01.786: E/AndroidRuntime(28212): at java.lang.Class.newInstanceImpl(Native Method) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at java.lang.Class.newInstance(Class.java:1208) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.Instrumentation.newActivity(Instrumentation.java:1067) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2289) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2453) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.ActivityThread.access$900(ActivityThread.java:173) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1303) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.os.Handler.dispatchMessage(Handler.java:102) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.os.Looper.loop(Looper.java:136) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at android.app.ActivityThread.main(ActivityThread.java:5579) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at java.lang.reflect.Method.invokeNative(Native Method) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at java.lang.reflect.Method.invoke(Method.java:515) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1268) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1084) 
07-09 18:54:01.786: E/AndroidRuntime(28212): at dalvik.system.NativeStart.main(Native Method) 
----------------------------------------------------------------------------------------------------- 
EmailReceiveTest.java 
package com.example.test; 

import java.io.*; 
import java.util.*; 
import javax.mail.*; 
import javax.mail.internet.MimeBodyPart; 
import com.sun.mail.imap.protocol.BODY; 

public class EmailReceiveTest { 
private static final String HOST = "pop.gmail.com"; 
private static final String USERNAME = "*******@gmail.com"; 
private static final String PASSWORD = "********"; 
private static final String saveDirectory = "/mnt/sdcard"; 

public static void doit() throws MessagingException, IOException { 
Folder folder = null; 
Store store = null; 
try { 
Properties props = new Properties(); 
props.put("mail.store.protocol", "pop3s"); // Google uses POP3S not POP3 
Session session = Session.getDefaultInstance(props); 
// session.setDebug(true); 
store = session.getStore(); 
store.connect(HOST, USERNAME, PASSWORD); 
folder = store.getDefaultFolder().getFolder("INBOX"); 
folder.open(Folder.READ_ONLY); 
Message[] messages = folder.getMessages(); 
System.out.println("No of Messages : " + folder.getMessageCount()); 
System.out.println("No of Unread Messages : " + folder.getUnreadMessageCount()); 
for (int i=0; i < messages.length; ++i) { 
System.out.println("MESSAGE #" + (i + 1) + ":"); 
Message msg = messages[i]; 
String from = "unknown"; 
if (msg.getReplyTo().length >= 1) { 
from = msg.getReplyTo()[0].toString(); 
} 
else if (msg.getFrom().length >= 1) { 
from = msg.getFrom()[0].toString(); 
} 
String subject = msg.getSubject(); 
System.out.println("제목 " + subject +" " + from); 
// you may want to replace the spaces with "_" 
// the files will be saved into the TEMP directory 
String filename = "/mnt/sdcard" +  subject; 
saveParts(msg.getContent(), filename); 
} 
} 
finally { 
if (folder != null) { folder.close(true); } 
if (store != null) { store.close(); } 
} 
}	

public static void saveParts(Object content, String filename) 
throws IOException, MessagingException 
{ 
OutputStream out = null; 
InputStream in = null; 
try { 
if (content instanceof Multipart) { 
Multipart multi = ((Multipart)content); 
int parts = multi.getCount(); 
for (int j=0; j < parts; ++j) { 
MimeBodyPart part = (MimeBodyPart)multi.getBodyPart(j); 
if (part.getContent() instanceof Multipart) { 
// part-within-a-part, do some recursion... 
saveParts(part.getContent(), filename); 
} 
else { 
String extension = ""; 
if (part.isMimeType("text/html")) { 
extension = "html"; 
} 
else { 
if (part.isMimeType("text/plain")) { 
extension = "txt"; 
} 
else { 
//  Try to get the name of the attachment 
extension = part.getDataHandler().getName(); 
} 
filename = filename + "." + extension; 
if (!(extension.matches(".*jpg.*"))) return; 
System.out.println("... " + filename); 
out = new FileOutputStream(new File(filename)); 
in = part.getInputStream(); 
int k; 
while ((k = in.read()) != -1) { 
out.write(k); 
} 
} 
} 
} 
} 
} 
finally { 
if (in != null) { in.close(); } 
if (out != null) { out.flush(); out.close(); } 
} 
} 
public static void main(String args[]) throws Exception { 
EmailReceiveTest.doit(); 
} 
} 
----------------------------------------------------------------------------------------------------- 
MainActivity.java 
package com.example.test; 

import java.io.IOException; 

import javax.mail.MessagingException; 

import android.app.Activity; 
import android.os.Bundle; 

import com.example.test.EmailReceiveTest; 
public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main);; 
        try { 
EmailReceiveTest.doit(); 
} catch (MessagingException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} catch (IOException e) { 
// TODO Auto-generated catch block 
e.printStackTrace(); 
} 
    } 
}

 

익명사용자 님이 2014년 7월 9일 질문

1개의 답변

0 추천

안드로이드에는  javax.mail 이나 com.sun.mail.imap.protocol.BODY 등이 없습니다.

익명사용자 님이 2014년 7월 9일 답변
...