●javamailでメールを送信する
■必要な部品を揃える
まずは、必要となる部品のjarを次のサイトからダウンロードします。
javamail-android
次の3つのファイルが必要となります。
additionnal.jar
mail.jar
activation.jar
3つのファイルをダウンロードしますが、jarはzipでまとめられていますので、開くと中身が見えてしまいますし、
勝手にzipとしてダウンロードしてしまうかもしれません。
その時はダウンロードしたファイルの拡張子をzipからjarにリネームしてください。
▼次にダウンロードした3つのファイルをメール送信したいプロジェクトのlibsフォルダにコピーします。
\AndroidStudioProjects\MyApplicationX\app\libs
その後にandroid studioでプロジェクトを開き直せば自動で読み込まれます。
■プロジェクトの設定
対象となるプロジェクトを開きます
\app\src\main\AndroidManifest.xml を開いて必要な権限を追加します
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="mail.myapplication">
<uses-permission android:name="android.permission.INTERNET" />
<application
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
</intent-filter>
</activity>
</application>
</manifest>
赤文字の部分を追加することによりインターネットのアクセス権限をアプリケーションに追加します。
■gmailで自分自身にメールを送信する
画面にボタンを張り付けて、ボタンを押すとメールが送信されるようにします。
そのためには以下のコードのgmailアカウントとパスワードを自分の物に書き換えてください。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
((android.widget.Button)findViewById(R.id.button))
.setOnClickListener(new android.view.View.OnClickListener() {
public void onClick(android.view.View view) {
asyncTask a=new asyncTask();
a.execute((Object)"gmailアカウント名",(Object)"gmailパスワード",new Object()) ;
}
});
}
private class asyncTask extends android.os.AsyncTask
@Override
protected void onPostExecute(Object obj) {
//doInBackgroundの戻り値が引数に渡される
//メインスレッドで実行されるため、画面周りの処理ができる。
//画面にメッセージを表示する
android.content.Context context = getApplicationContext();
android.widget.Toast t=android.widget.Toast.makeText(context,(String)obj, android.widget.Toast.LENGTH_LONG);
t.show();
}
}
}
なんだか、ややこしい処理がいくつもあります。
そもそもネットワーク処理はメインスレッドで処理できないためAsyncTaskにより処理してもらう必要があります。
あとsmtp認証の部分ですね。
そこんところで特にややこしくなりますね。
しかし、上のコードのアカウント名とパスワードを書き換えて実行しても、エラーが発生することがあります。
javax.mail.AuthenticationFailedException が出ています。
まずは、アカウント名とパスワードが正しい事を確認してみてください。
次にgmailのメールボックスを見てみると、"ブロックされたログインについて・・・・" というメールが来てると思います。
この場合は最新のセキュリティ標準に対応していないため、セキュリティ上で例外が発生しています。
そこで、自己責任で自分のgoogleアカウントのセキュリティを外すとメールが送信できます。
▼設定用リンク
https://myaccount.google.com/lesssecureapps
そもそも、今の"最新のセキュリティ"って何?っていう感じです。
今は、メールが動いていても、いつgoogleの気分次第でセキュリティが強化されるかわからない訳ですから事前に有効にしておくに越したことはないかもしれません。
あくまで自己責任ですので。
▲トップページ
>
android