Androidアプリケーションの開発 【04:Javamailメール送信アプリ】
Javamailを使ってメールを送信するアプリの作成
Javamailを使ってメールを送信するアプリを作成してみます。
ライブラリのダウンロード
javamail-androidから下記のライブラリをダウンロードします。
- additional.jar
- mail.jar
- activation.jar
ライブラリのインポート
ダウンロードした3つのライブラリをインポートします。
プロジェクト直下にlibsディレクトリを作成し、jarを配置します。
jarを右クリックし、「ライブラリとして追加…」を選択後、対象プロジェクトを選択しOKをクリックします。
AndroidManifest.xmlでインターネットを許可する
下記の1行を追記します。
<uses-permission android:name="android.permission.INTERNET" />
メール送信メソッドの実装
ボタンを1つ配置し、OnClickでメールを送信する。
NainActivity.java
package com.example.testappmail3; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; 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{ protected String account; protected String password; @Override protected Object doInBackground(Object... obj){ account=(String)obj[0]; password=(String)obj[1]; java.util.Properties properties = new java.util.Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.port", "465"); properties.put("mail.smtp.socketFactory.post", "465"); properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); final javax.mail.Message msg = new javax.mail.internet.MimeMessage(javax.mail.Session.getDefaultInstance(properties, new javax.mail.Authenticator(){ @Override protected javax.mail.PasswordAuthentication getPasswordAuthentication() { return new javax.mail.PasswordAuthentication(account,password); } })); try { msg.setFrom(new javax.mail.internet.InternetAddress(account + "@gmail.com")); //自分自身にメールを送信 msg.setRecipients(javax.mail.Message.RecipientType.TO, javax.mail.internet.InternetAddress.parse(account + "@gmail.com")); msg.setSubject("Test Mail"); msg.setText("Test"); javax.mail.Transport.send(msg); } catch (Exception e) { return (Object)e.toString(); } return (Object)"OK"; } @Override protected void onPostExecute(Object obj) { //画面にメッセージを表示する android.content.Context context = getApplicationContext(); android.widget.Toast t=android.widget.Toast.makeText(context,(String)obj, android.widget.Toast.LENGTH_LONG); t.show(); } } }
activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Hello World!" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button" android:textSize="40sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.6" /> </android.support.constraint.ConstraintLayout>