JavaMail の準備
JavaMailのダウンロード
http://code.google.com/p/javamail-android/
mail.jar
additionnal.jar
activation.jar
Javaのビルドパスに設定する。
エラー
android.os.NetworkOnMainThreadException
上記のエラーが出た場合の対策
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
メールアドレスとパスワードはそれぞれ設定して下さい。
package com.android;
import java.util.Properties;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import android.app.Activity;
import android.os.Bundle;
//import android.os.StrictMode;
public class AndroidTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().permitAll().build());
final String mUser = "kameji2000@gmail.com";
final String mPassword = "xxxx";
Properties props = new Properties();
props.put("mail.smtp.host", "smtp.gmail.com");// SMTPサーバ名
props.put("mail.smtp.port", "587"); // SMTPサーバポート
props.put("mail.smtp.auth", "true");// smtp auth
props.put("mail.smtp.starttls.enable", "true");// STTLS
Session sess = Session.getInstance(props);
MimeMessage mimeMsg = new MimeMessage(sess);
try {
/*
final MimeMessage mimeMsg = new MimeMessage(Session.getDefaultInstance(props, new Authenticator() {
@Override
// 認証データ。アカウント名とパスワードを指定して下さい。
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(mUser, mPassword);
}
}));
*/
mimeMsg.setFrom(new InternetAddress(mUser));//Fromアドレス
mimeMsg.setRecipient(Message.RecipientType.TO, new InternetAddress(mUser));//送信先アドレス
mimeMsg.setContent("body", "text/plain; utf-8");
mimeMsg.setHeader("Content-Transfer-Encoding", "7bit");
mimeMsg.setSubject("テスト送信");//件名
mimeMsg.setText("アンドロイドからの送信", "utf-8");//本文
Transport transport = sess.getTransport("smtp");
transport.connect(mUser, mPassword);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());// メール送信
transport.close();
} catch (Exception e) {
e.printStackTrace();
}
setContentView(R.layout.main);
}
}
マニフェストの設定
<uses-permission android:name="android.permission.INTERNET" />
エラー対策
java.lang.NoClassDefFoundError: javax.mail.Session
のエラーがでた、外部jarファイルの場所が悪いみたい、
プロジェクトに libs フォルダを作って、そこに jar ファイルを入れて、そこからビルドパスに追加する。