プロデルでGmailのメールを受信する

今日は、プロデルでGmailの受信メーラーを作ってみます。

筆者は普段Gmailを常用していないのですが、最近は企業や学校のアカウントがGmailベースのサービスとなっているケースが多く、Gmailメールアドレスを持っていなくても否応なく使っているケースがあるかと思います。

プロデルには、メール機能が用意されていますのでデスクトップアプリのメーラーを作れます。デスクトップアプリならいちいちWebブラウザを開いてからブックマークをクリックしてログインしたりする必要なく、気軽にメールをチェックできます。
また、プロデルでプログラミングすれば、メールの受信方法をプログラミングで好きに変えることができます。今回のメール受信プログラムを改造して、自分好みの専用メーラーを作ることができます。

## アカウントの設定変更
Gmailは、Webベースのサービスですが、アカウントの設定次第でIMAPやPOP3でメールを受信することもできます。受信に必要な設定は次の2つです。

- IMAPの有効化
- 安全性の低いアプリのアクセスの有効化

Gmailの設定でIMAPを有効化する
IMAPは、メールを受信する通信手段の一つです。既定値ではオンになっていないので有効化します。

![スクリーンショット_20221204_220739.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/40934f5d-a975-734d-9bd2-1abad6fb43e2.png)

プロデルのメール機能は、OAuth2.0の認証方法に未対応ですので、そのままではGmailのメールを受信できません。受信するには、Googleアカウントの設定で「安全性の低いアプリのアクセス」をオンにして、平文パスワードの認証を有効化する必要があります。パスワードが漏れなければ問題ありませんが、常用する場合には、パスワードを十分に長く、意味のないランダムな文字列に設定するといった対策が必要です。

Googleアカウントのセキュリティ設定で「安全性の低いアプリのアクセス」をオンにする
![スクリーンショット_20221204_221129.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/6f19948f-676d-3c61-aa6d-809c4d35c0bb.png)

以上の2つの設定を有効化することで、プロデルからもGmailのメールを受信できます。

## プロデルのメール機能
プロデルのメール機能は、次のページで説明しています。

https://produ.irelang.jp/docs/network/mail/index.htm

今回はメールを受信するだけですので、次の種類を使います。

- [アカウント](https://produ.irelang.jp/docs/network/mail/account.htm) - 接続するアカウントの設定
- [受信トレイ](https://produ.irelang.jp/docs/network/mail/receivetray.htm) - 受信メールボックスを表す
- [受信メール](https://produ.irelang.jp/docs/network/mail/receivemail.htm) - 受信トレイに届いたメールのひとつひとつ

プロデルはオブジェクト指向日本語プログラミング言語ですので、メーラーの画面の一つ一つの要素がオブジェクトとして定義されています。これらのオブジェクトを操作してプログラミングしていきます。


# 完成したプログラム

今回は、受信トレイの一覧画面(メイン画面)と、選んだメールの内容を表示する画面(メールウィンドウ)の2つのウィンドウを作りました。

プログラムの冒頭で、メールアカウントを設定します。これは、Outlookなどのメーラーで指定する情報と同じ内容を設定します。

メイン画面の「受信する」手順で、設定したアカウントとしてGmailに接続し、最新の10件のメールを取得します。また[受信]ボタンで、最新の受信メールを取得できます。

リストビューからメールを選択してダブルクリックすると、そのメールの内容が別ウィンドウに表示されます。

動作環境:[プロデル1.9.1164](https://produ.irelang.jp/downloads/1.9/index.php?type=exe)

```メーラ.rdr
//メーラー
マイアカウントというアカウントを作る
マイアカウントのプロトコルは、「IMAP」
マイアカウントの受信サーバのサーバ名は、「imap.gmail.com」
マイアカウントの受信サーバのポート番号は、993
マイアカウントの受信サーバのユーザ名は、「」
マイアカウントの受信サーバのパスワードは、「」
マイアカウントの受信サーバの暗号化方式は、SSL

メイン画面を表示する
待機する

メイン画面とは
	ウィンドウを継承する
	はじめの手順
		初期化する
		ーー貼り付けた部品に対する操作をここに書きます
	終わり
	初期化する手順
	ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
		この実質大きさを｛601,394｝に変える
		この内容を「メーラー」に変える
		初期化開始する
		受信リストビューというリストビューを作る
			その位置と大きさを｛0,32,601,362｝に変える
			その表示方法を「詳細」に変える
			その全列選択を○に変える
			その見出し一覧を｛「件名」,「差出人」,「送信日時」｝に変える
			その見出し幅を｛318,132,123｝に変える
			その移動順を2に変える
			そのドッキング方向を「全体」に変える
		ツールバー1というツールバーを作る
			その位置と大きさを｛0,0,601,32｝に変える
			その内容を「ツールバー1」に変える
			その移動順を1に変える
			受信ボタン部品というボタン部品をツールバー1へ作る
				その内容を「受信」に変える
				その表示を○に変える
				その大きさを｛52,29｝に変える
				その表示位置を「Text」に変える
				その説明を「受信」に変える
		初期化終了する
		この設計スケール比率を｛144,144｝に変える
終わり
	受信する手順
		マイアカウントの受信サーバへ接続する
		マイアカウントから受信してメイン受信トレイとする
		メール件数は、メイン受信トレイの件数
		受信件数は、メール件数
		//新しい順番に最大10件のメールを取得する
		もしメール件数が10より大きいなら受信件数は、10
		受信リストビューをクリアする
		受信リストビューを更新開始する
		番号を0から受信件数-1まで増やしながら繰り返す
			メールは、メイン受信トレイの(メール件数-番号)番目
			受信リストビューにメールの件名を追加する
				その詳細を｛メールの差出人, メールの送信日｝に変える
				そのタグをメールに変える
		繰り返し終わり
		受信リストビューを更新終了する
		マイアカウントの受信サーバから切断する
	終わり
	開いた時の手順
		受信する
	終わり
	受信リストビューがダブルクリックされた時の手順
		メールは、受信リストビューの選択項目のタグ
		メール画面というメールウィンドウを作る
		メール画面にメールを読み込む
		メール画面を表示する
	終わり
	受信ボタン部品がクリックされた時の手順
		受信する
	終わり
終わり
メールウィンドウとは
	ウィンドウを継承する
	はじめの手順
		初期化する
		ーー貼り付けた部品に対する操作をここに書きます
	終わり
	初期化する手順
	ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
		この実質大きさを｛693,394｝に変える
		この内容を「メールウィンドウ」に変える
		初期化開始する
		本文テキスト領域というテキスト領域を作る
			その位置と大きさを｛0,94,693,300｝に変える
			そのドッキング方向を「全体」に変える
		パネル1というパネルを作る
			その位置と大きさを｛0,0,693,94｝に変える
			その移動順を1に変える
			そのドッキング方向を「上」に変える
			ヘッダテキスト領域というテキスト領域をパネル1へ作る
				その位置と大きさを｛0,0,693,94｝に変える
				そのドッキング方向を「全体」に変える
		初期化終了する
		この設計スケール比率を｛144,144｝に変える
終わり
	自分に【メール】を読み込む手順
		自分の内容は、メールの件名
		宛先は、メールの宛先
		ヘッダテキスト領域の内容は、「宛先:[宛先(1)]
差出人:[メールの差出人]」
		本文テキスト領域の内容は、メールの本文
	終わり
終わり
```

## 動作画面
![スクリーンショット_20221205_004055-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/101225/20d58e76-4796-8fc1-eb1b-f155d578fac6.png)


## まとめ
今回は、とてもシンプルなメーラーをプロデルで作りました。
より作りこんで自分にぴったりなメーラーを作ってみるのも楽しいかと思います。