Android
 Computer >> コンピューター >  >> プログラミング >> Android

KotlinでAndroidアプリからGmailを使ってメールを送信する方法【コード例付きで解説】

この記事では、Kotlinを使ってAndroidアプリからGmailなどのメールアプリ経由でメールを送信する方法を、サンプルコード付きで段階的に解説します。Intent(インテント)を活用することで、複雑なSMTP設定などを行わずに、手軽にメール送信機能を実装できます。

実装の全体像

本チュートリアルでは、ユーザーが入力した「宛先」「件名」「本文」を受け取り、ボタンをタップするとメールアプリが起動して送信できる画面を作成します。実装は以下の4つのステップで進めます。

  1. Android Studioで新規プロジェクトを作成する
  2. activity_main.xmlに入力フォーム用のUIを定義する
  3. MainActivity.ktにメール送信処理を記述する
  4. AndroidManifest.xmlを確認する

Step 1:新規プロジェクトの作成

Android Studioを開き、メニューから「File」→「New Project」を選択します。必要なプロジェクト名やパッケージ名などを入力し、言語は「Kotlin」を選択してプロジェクトを作成しましょう。

Step 2:レイアウトファイルの作成(res/layout/activity_main.xml)

まず、宛先メールアドレス・件名・本文を入力するためのEditTextと、送信をトリガーするButtonを縦方向に並べたLinearLayoutを定義します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="8dp"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="宛先メールアドレス" />

    <EditText
        android:id="@+id/editTextMail"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:inputType="textEmailAddress" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="件名" />

    <EditText
        android:id="@+id/editTextSubject"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="本文" />

    <EditText
        android:id="@+id/editTextMessage"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:lines="4" />

    <Button
        android:id="@+id/buttonSend"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="送信" />
</LinearLayout>

Step 3:メール送信処理の実装(src/MainActivity.kt)

次に、MainActivity.ktに入力内容を取得し、ACTION_SENDインテントでメールアプリを呼び出す処理を実装します。

import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.appcompat.app.AppCompatActivity

class MainActivity : AppCompatActivity() {

    lateinit var editTextMail: EditText
    lateinit var editTextSubject: EditText
    lateinit var editTextMessage: EditText
    lateinit var buttonSend: Button

    lateinit var email: String
    lateinit var subject: String
    lateinit var message: String

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        title = "KotlinApp"

        editTextMail = findViewById(R.id.editTextMail)
        editTextSubject = findViewById(R.id.editTextSubject)
        editTextMessage = findViewById(R.id.editTextMessage)
        buttonSend = findViewById(R.id.buttonSend)

        buttonSend.setOnClickListener {
            getData()
            val intent = Intent(Intent.ACTION_SEND).apply {
                type = "message/rfc822"
                putExtra(Intent.EXTRA_EMAIL, arrayOf(email))
                putExtra(Intent.EXTRA_SUBJECT, subject)
                putExtra(Intent.EXTRA_TEXT, message)
            }
            startActivity(Intent.createChooser(intent, "メールアプリを選択"))
        }
    }

    private fun getData() {
        email = editTextMail.text.toString()
        subject = editTextSubject.text.toString()
        message = editTextMessage.text.toString()
    }
}

ポイント解説

  • Intent.ACTION_SEND:データを他アプリへ送るための標準的なインテントアクションです。
  • type = "message/rfc822":MIMEタイプを指定することで、アプリ選択ダイアログにメールアプリ(Gmailなど)だけが表示されるようになります。
  • EXTRA_EMAIL / EXTRA_SUBJECT / EXTRA_TEXT:それぞれ宛先・件名・本文をメールアプリへ渡すためのエクストラです。
  • createChooser():端末にインストールされているメールアプリの一覧を表示するダイアログを開きます。

なお、この方法は実際の送信処理を外部のメールアプリに委ねる仕組みのため、特別なパーミッション(権限)の宣言は不要です。

Step 4:AndroidManifest.xmlの確認

マニフェストファイルには、MainActivityがランチャーアクティビティとして正しく登録されていることを確認しておきましょう。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="com.example.q11">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリの実行と動作確認

それでは実際にアプリを起動してみましょう。ここでは、実機のAndroidスマートフォンをPCに接続している前提で説明します。Android Studioでプロジェクト内の任意のアクティビティファイルを開き、ツールバーの「Run」アイコンをクリックします。デバイス選択画面で接続したスマートフォンを選択すると、アプリが端末にインストールされ、起動します。

宛先・件名・本文を入力して「送信」ボタンをタップすると、メールアプリを選択するダイアログが表示されます。「Gmail」を選択すれば、入力内容が反映された新規メール作成画面が開き、そのまま送信できます。

まとめ

Kotlinでは、ACTION_SENDインテントとcreateChooser()を組み合わせるだけで、わずか数行のコードでGmailをはじめとするメールアプリとの連携を実現できます。まずはシンプルなこの方法から試してみてください。

  1. 【Android】Intent(インテント)を使ってアクティビティ間でデータを送受信する方法

    この記事について 本記事では、Androidアプリ開発においてIntent(インテント)を使用して、あるアクティビティ(Activity)から別のアクティビティへデータを送信する方法を、実際のサンプルコードとともに段階的に解説します。画面遷移の際にユーザーが入力した文字列を次の画面へ受け渡す、最も基本的なパターンを習得できます。 手順1:新規プロジェクトの作成 Android Studioを起動し、メニューから「File」→「New Project」を選択します。必要な項目をすべて入力して、新しいプロジェクトを作成してください。 手順2:activity_main.xml の作成 res/l

  2. AndroidアプリからGmailを使ってメールを送信する方法【サンプルコード付きで解説】

    この記事では、AndroidアプリケーションからGmailなどのメールアプリを使ってメールを送信する方法を、実際のサンプルコードとともに段階的に解説します。仕組みの概要Androidでメールを送信する場合、Intent(インテント)を使用するのが一般的です。直接SMTPサーバーと通信するのではなく、「ACTION_SEND」という標準インテントを発行することで、端末にインストールされているGmailなどのメールアプリに送信処理を委ねます。この方法なら、認証情報をアプリ内に持つ必要がなく、安全かつ簡単に実装できます。ステップ1:新規プロジェクトを作成するまず、Android Studioで新しい