「そのメール業務自動化しませんか？」～HULFT SquareとMS Exchange Onlineをつないでみた～

# はじめに

メールは今でもビジネスにおけるコミュニケーションの中心で、日々メール対応に忙殺されている方も多いのではないでしょうか。
メール送信を自動化すれば、作業時間の短縮・ミスの削減・メール施策の効果向上といったさまざまなメリットを得られます。


例えば、以下の業務でファイル受信からメール送信までの一連の手作業を自動化することにより、業務効率の向上と手作業が原因となるメールの誤送信を防ぐことが出来ます。

1.ファイル受信: 人事情報がファイルで送られてくる。
2.ファイル受信を確認してデータベースへ登録
3.関係者へメール送信

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b8cd356a-05d0-65e5-1d7b-3bf07bf8814e.png)


今回はHULFT SquareとMS Exchange Onlineを連携させることによって業務の自動化につながる仕組みを構築していきます、

:::note info
**MS Exchange Online**とは、Microsoftが提供するクラウドベースのメールおよびカレンダーサービスです。Office 365サブスクリプションの一部として利用できます。
デバイスを問わずインターネットがあればメールにアクセスし、管理することができます。

[Exchange Online学習ページ](https://learn.microsoft.com/ja-jp/exchange/exchange-online)
:::

# 今回やること
HULFT SquareとMS Exchange Onlineを連携させることにより、ストレージへのファイル受信後の⇒関係者へのメール通知までを自動化します。

①ファイルイベントジョブでファイル受信を検知し、メール送信処理スクリプトを実行

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/50628390-da8c-f312-b702-d910efebd7b0.png)




# 検証手順
## MS Exchange Online連携用のコネクション作成
:::note info
今回MS Exchange Onlineへの認証は**OAuth認証**を使用します。
OAuth認証はID・パスワードベースとは異なるトークンベースの認証です。
認証のためにID・パスワードベースを毎回入力する必要がなく、またトークンには有効期限が設定されているためID・パスワードよりもセキュアな認証方法であると言えます。
:::


### 1.HULFT Squareメール送信サーバ接続のコネクション設定
まず、HULFT Squareでメール送信サーバ接続のコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/10c8305e-fee0-e9bb-abe2-adf1b1477a9b.png)


検索窓に`メール`と入力いただき、**［種類］**　に表示される`メール送信サーバ接続`を選択いただき　**［次へ］** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b3959fc9-33ae-69c2-e1ff-e8bf9077d839.png)


任意の　**［名前］**、今回は`MSExchangeOnline`入力いただき、**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d6388d83-e2e1-64c2-9398-abe84faed5d2.png)


以下を入力いただき、**［接続テスト］** で成功を確認後、**［次へ］**　ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/1163e9fc-361d-28e9-2e2f-6d5ec491677c.png)


**［ホスト名］**　：`smtp.office365.com`
**［ポート番号］**　：`587`
**［SSL接続］**　：`STARTTLS` または、`SSL/TLS`

:::note warn
MS Exchange Onlineのホスト名とポート番号は固定値となります。このまま設定して下さい。
:::

任意のプロファイルを選択し、**［次へ］**　ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/caaab2fb-1090-19f3-afb7-55e6f487e04b.png)

内容確認後、**［完了］**　ボタンをクリックください。これでHULFT Squareメール送信サーバ接続のコネクション設定は完了となります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/94caeff1-7f9c-731c-c5ae-b07deba3c019.png)



### 2.OAuth認証のコネクション設定（Entra ID側）

HULFT SquareからMS Exchange OnlineへOAuth認証で連携するためには、OAuth認証コネクション設定が必要になります。

OAuth認証のコネクション設定を行うにあたり、Entra ID(旧Azure AD)側に **［アプリの登録］** を行う必要があります。先に、アプリの登録を行います。

Azureのポータルサイトに接続し設定を実施していきます。
[Azureポータル](https://portal.azure.com/#home)

**［アプリの登録］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ac4f76cf-1baa-2e65-aecd-86d10b060f43.png)



**［新規登録］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e216ee4c-30f3-0b0f-8de1-22377a2464fc.png)


任意の　**［名前］**、今回は`HSQ_MS Exchange Online` と入力いただき、
リダイレクトURL　`https://app.square.hulft.com/connections/oauth2/callbac` を入力し、**［登録］** をクリックします。

:::note warn
HULFT SquareへのリダイレクトURLは固定となります。このまま設定してください。
:::

数秒後、アプリが作成されます。以下の画面で認証に必要な値を取得していきます。


①　**［概要］**　ページで表示される **［アプリケーション (クライアント) ID］**　の値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/de436cb2-9176-060a-3105-65078f6e842b.png)


②、③　**［エンドポイント］**　タブで　**［OAuth 2.0 承認エンドポイント (v2)］** 、
　**［OAuth 2.0 トークン エンドポイント (v2)］**  の値を取得します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/66cd3d4c-a9b7-9ede-dc72-e1c05d06ffce.png)


④　**［クライアントシークレット］**  の値を取得します。
**［証明書とシークレット］**　ページで **［新しいクライアントシークレット］**　をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/b88d7248-eed8-8179-5973-16d16aa41ff3.png)

任意の　**［名前］**、今回は`HSQ_MS Exchange Online接続用` を入力して、**［追加］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6fd0e9ff-ad20-00cb-d66b-7db8af09b7ce.png)


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/433fc9f2-4fdf-4cdd-37d6-c0573d0069a7.png)

:::note alert
必ず値を控えておいて下さい、一度しか表示されません。
:::

次にAPIのアクセス許可設定を実施していきます。
**［API アクセス許可］**　ページで **［アクセス許可の追加］**　→ **［Microsoft Graph］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ce12aa90-35f2-1ab9-9358-407ad08268e1.png)

 **［委任されたアクセス許可］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ff18ab52-e60d-b67d-0d25-cbffdf64d7e9.png)

検索窓に`offline_access`と入力し、アクセス許可に表示される　**［offline_access］**　にチェックを入れ、**［アクセス許可の追加］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4fcdcee9-8dd3-e449-2c66-3aab1f994eb5.png)

同様に検索窓に`smtp.send`と入力し、アクセス許可に表示される　**［smtp.send］**　にチェックを入れ、**［アクセス許可の追加］** をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/3f01ca5f-0acd-3ed3-cbb1-8eb18edfa671.png)

### 3.OAuth認証のコネクション設定（HULFT Square側）
続いてHULFT SquareでOAuth認証用のコネクションを設定していきます。

**［コネクション］** より、**［新規追加］** をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/39acaf30-f583-fc0d-0473-8b3aac77be0b.png)

検索窓に`oauth`と入力いただき、**［種類］**　に表示される`OAuth2.0認証`を選択いただき　**［次へ］** ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/cb237c86-f293-c8e8-9579-b821ecdd40bb.png)

任意の　**［名前］**、今回は`OAuthMSExchangeOnline`入力いただき、**［次へ］** ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d3d51034-5495-61ca-8ba4-241123c3aeca.png)

**［2.OAuth認証のコネクション設定（Entra ID側）］** で取得した値を設定して、リフレッシュトークンを発行します

**［スコープ］**　：`Offline_access`と`https://outlook.office.com/SMTP.Send`を設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/ec1bd1b6-6803-acf0-73f4-0dbf10a77f9c.png)

下記画面に遷移後、**［承諾］** ボタンをクリックすると、リフレッシュトークンが発行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f6a05ddf-7bf7-f2d5-626f-1a4d1402c56e.png)



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/0aec2d79-331a-6a12-c68d-9bf24585d6c7.png)

**［次へ］**　ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/948746c1-9b9e-2d4a-5386-80a865187082.png)

**［完了］**　ボタンをクリックします。これでOAuth認証用のコネクション設定は終了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/01d91f28-da0d-a7ae-aaf8-883d438ce5cc.png)


### 4.OAuth認証ユーザーに対して、SMTP AUTHを有効にする

Microsoft 365 管理センターで、OAuth認証ユーザの SMTP 送信 (SMTP AUTH) を有効にする必要があります。
下記、画面キャプチャの「認証済みSMTP」にチェックを入れてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/4e0ee5a8-7cfa-14ec-eb67-0f5e9e361dfb.png)

:::note info
詳細は、下記をご参照の上、ご対応お願いいたします。 
[Exchange Online で認証済みクライアントの SMTP 送信 (SMTP AUTH) を有効または無効にする](https://learn.microsoft.com/ja-jp/exchange/clients-and-mobile-in-exchange-online/authenticated-client-smtp-submission )
:::

:::note warn
Microsoft 365 管理センターの操作権限が無い場合は各組織のに管理者へお問い合わせください。
:::

## スクリプト作成

今回は「MSExchange連携」プロジェクト配下に`メール送信用スクリプト`を作成しています・

**[HULFT Square Designer]** を起動し、スクリプトを作成していきます。

**[ツールパレット]**　より　**[ネットワーク＞メール＞1通メール送信]**　アイコンを選択しドラッグ＆ドロップしてスクリプトキャンバスへ配置します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/16b2ab91-21d7-e317-589b-5b00db2b2d2a.png)

**[必須設定]**　タブを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/43c2b2e6-126d-ca91-0233-436a0be2b542.png)

**[名前]**　任意の名前、今回は`メール送信`を入力
**[接続先]**　**[1.HULFT Squareメール送信サーバ接続のコネクション設定]**　で作成した`MSExchangeOnline`コネクションを選択
**[送信先メールアドレス]**　有効なメールアドレスを入力
**[送信先]**　通知先のメールアドレスを入力

次に　**[認証]**　タブを設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/318acc36-de49-8ab3-8756-527013d0ec21.png)

**[認証モード］**　`OAuth 2.0 認証`を選択
**[ユーザ名]**　OAuth 認証用のユーザを入力します。
**[認証]**　**[3.OAuth認証のコネクション設定（HULFT Square側）]**　で作成した`OAuthMSExchangeOnline`コネクションを選択

　**[メッセージ]**　タブに下記を入力後、完了をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/6d00d52b-abfe-52e6-84f2-a47bf67fd6ef.png)

**[件名］**　今回は`ファイル受信のお知らせ`を入力します。
**[本文]**　今回は`ストレージにファイルが配置されました。`を入力します。


下記のように　**[start]**　から　**[END]**　までドラッグ＆ドロップでプロセスフローの矢印を繋ぐとデータアンロード用スクリプトの完成です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/7057b870-7d0f-4757-f1ce-86dae1f3f641.png)


## ファイルイベントジョブ設定
メール送信用スクリプトを実行するファイルイベントジョブを設定します。
今回は 監視対象ディレクトリー　**[SE_HSQブログ用/MSEOTEST]**　へファイルが作成された場合、メール送信スクリプトが実行されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/f446ad24-c760-d0e4-57f1-63456682c6f9.png)


## 検証結果確認

監視対象ディレクトリーにファイルが作成された直後、ファイルイベントジョブが起動され、メールが送信されたことが確認できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/891863be-a319-e13b-5a5a-0c1e0237af9f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/d500cd83-eb80-4693-9a2c-73152901072f.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/458288/e37b8a69-018c-549f-14e2-0c2b61cddce9.png)


# 終わりに
いかがだったでしょうか。HULFT SquareとMS Exchange Onlineをつないで、メール自動通知機能を作成してみました。

当記事が、iPaaSとクラウドベースのメールサービスの連携を用いての業務改善の一助になれば幸いです。それではまた！