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));//送信先アドレス
ありがとうございます。
削除早速試してみます。