0
私はどのGmailアカウントでも電子メールを読もうとしています。コードは、getMail()メソッドで折り畳まれたgmailアカウントからInboxアイテムをリストする方法です。メッセージを表示するGmailアカウントの受信トレイ
mailReader.java package myMail.namespace;
import java.security.Security;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
public class mailReader extends javax.mail.Authenticator{
static {
Security.addProvider(new myMail.namespace.JSSEProvider());
}
static Session session;
static Store store;
public static Message [] getMail() throws MessagingException{
connect();
Folder folder = store.getFolder("Inbox");
folder.open(Folder.READ_ONLY);
Message[] messages = folder.getMessages();
return messages;
}
private static void connect() throws MessagingException{
if (null != session)
return;
java.util.Properties props = new java.util.Properties();
props.setProperty("mail.imap.socketFactory.class",
"javax.net.ssl.SSLSocketFactory");
props.setProperty("mail.imap.socketFactory.fallback", "false");
props.setProperty("mail.imap.socketFactory.port", "993");
session = Session.getDefaultInstance(props);
store = session.getStore("imap");
store.connect("imap.gmail.com", "[email protected]", "myPass");
}
}
そしてreadMailクラス
package myMail.namespace;
import javax.mail.Message;
import javax.mail.MessagingException;
import android.app.ListActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class readMail extends ListActivity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
//setContentView(R.layout.main);
Message[] messages = new Message[] { };
try {
messages = mailReader.getMail();
}
catch (MessagingException e) {
Log.e("mailReader getMail error. in readmail.java", e.getMessage(), e);
}
setListAdapter(new ArrayAdapter<Message>(this,
android.R.layout.simple_list_item_1, messages){
@Override
public View getView(int position, View convertView, ViewGroup parent) {
Message message = getItem(position);
TextView resultView = null;
resultView = new TextView(super.getContext());
try {
resultView.setText(message.getSubject());
}
catch (MessagingException e) {
Log.e("resultView.setText in readmail", e.getMessage(), e);
}
return resultView;
}
});
}
}
そしてJSSEプロバイダー
package myMail.namespace;
import java.security.AccessController;
import java.security.Provider;
public final class JSSEProvider extends Provider {
//private static final long serialVersionUID = 1L;
public JSSEProvider() {
super("HarmonyJSSE", 1.0, "Harmony JSSE Provider");
AccessController.doPrivileged(new java.security.PrivilegedAction<Void>() {
public Void run() {
put("SSLContext.TLS",
"org.apache.harmony.xnet.provider.jsse.SSLContextImpl");
put("Alg.Alias.SSLContext.TLSv1", "TLS");
put("KeyManagerFactory.X509",
"org.apache.harmony.xnet.provider.jsse.KeyManagerFactoryImpl");
put("TrustManagerFactory.X509",
"org.apache.harmony.xnet.provider.jsse.TrustManagerFactoryImpl");
return null;
}
});
}
}
例外スタックトレースを送信してください。 – kosa
これは必ずしも理由ではありませんが、 '' if(null == convertView ||(convertView instanceof TextView)) '' convertViewがTextViewのインスタンスである場合にresultViewをnullにします。 – harism
NPEのデバッグにどのように期待しているのか不思議です。コードを読んでそれを理解するだけですか?プロジェクトを作成し、コンパイルして実行しますか? –