안녕하세요! 안드로이드 개발중에 질문이 있어 글을 올립니다 ㅠㅠ
이메일 계정에 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();
}
}
}