スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

javamailでメールを送る時のエラー

昔送れていたJAVAMAILが、送れなくなった!
ちなみに、出てくるエラーは「android.os.NetworkOnMainThreadException」。

理由は、送れていた時はAPI8のエミュレータを使っていたが、API15とかのエミュレータを使ったことで送れなくなったらしい。
というのも、android3以降、メインスレッドでJAVAMAILが送れなくなったよう。

参考記事 → ココ

なので、AsyncTaskを使ってそれを回避。
※ もっとシンプルな回避方法は、ココに丁寧に記載されていました。




public void MySendMail(final String mUser, final String pw, final String mTo, final String title, final String sBody){


if( ! mUser.equals("") ){

new AsyncTask<Void, Void, Void>() {
@Override public Void doInBackground(Void... arg) {
try {
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);

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(title);//件名
mimeMsg.setText(sBody, "utf-8");//本文

Transport transport = sess.getTransport("smtp");
transport.connect(mUser, pw);
transport.sendMessage(mimeMsg, mimeMsg.getAllRecipients());// メール送信
transport.close();

} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute();

}
}

スポンサーサイト

トラックバック

コメント

コメントを残す

Secret



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。