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 ファイルを入れて、そこからビルドパスに追加する。
いつもお世話になってます。
返信削除上記のコードを書いたところ、javax.mail.Messageのimportの行で「インポート javax.mail.Message は、別の import 文と一致しません」というエラーが出てしまいます。
原因は何でしょうか?
お手数をおかけしますが、お教えください。
同じエラーが出た事がないので、わかりませんが、
削除3つのjarファイルをダウンロードして、
メニューのプロジェクト、プロパティー、javaのビルドパス、ライブラリに3つのファイルを追加が完了して、eclipseのパッケージエクスプローラでエラーがでたプロジェクトの参照ライブラリでも追加したjarファイルが確認できるか調べてはどうでしょうか。
お世話になります。
返信削除返信が遅くなり申し訳ありません。
調査の結果、
import javax.mail.Message;
より前に、記述している
import android.os.Message;
が影響しているようです(GPSで位置を取得するための処理に必要なため)。
何か解決策などありますでしょうか。
お手数をおかけして申し訳ありませんが、お教えください。
import android.os.Message;をコメントアウトして、
削除Message を MimeMessage にしても動きました。
//import javax.mail.Message;
mimeMsg.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(mUser));//送信先アドレス
ありがとうございます。
削除早速試してみます。