---
title: カスタム処理を利用して、コンテンツ追加時にメールを送信する
category: オペレーション
weight: 1
---
カスタム処理を使用して、特定の処理の途中で独自の処理を実行する方法を解説します。
この機能を利用すると、標準機能以外でのタイミングで通知を送信したりデータ登録ができます。

今回は、新しくコンテンツが追加された時にメールで通知をする処理を実装します。

## カスタム処理を作成する
それではカスタム処理を作成します。

### 1. カスタム処理の一覧画面を表示する  
メニューの[オペレーション] -> [カスタム処理] をクリックします。 
![Image from Gyazo](https://t.gyazo.com/teams/diverta/05fc571fc550915a05f0c13d0508e9f6.png)

### 2. カスタム処理の編集画面を表示する 
カスタム処理一覧画面の右上の [追加] をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/9998b0797d2ae3e08dd1c0ffde72420c.png)
すると、カスタム処理編集画面が表示されます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/fcc8d76f9247345f734858139362b6cf.jpg)

![Image from Gyazo](https://t.gyazo.com/teams/diverta/ce36fad667a7f35efa0bc8d5f6dc3e74.jpg)

### 3. タイトル・識別子を記入する
それではカスタム処理を作成していきます。  
まずはタイトルと識別子に記入します。今回は下記のように記入します。

- タイトル：コンテンツ投稿後にメールを送信する
- 識別子：sample1_trigger

:::tip
タイトル・識別子は他のカスタム処理と重複できません。
実装対象のエンドポイント名など、他と重複しない内容で記入してください。
:::

![Image from Gyazo](https://t.gyazo.com/teams/diverta/bb929c51d437b8da796be4ce19880262.png)
### 4. これを使ったコンポーネントを記入する
次にカスタム処理を使ったコンポーネントを記入します。  
今回は下記のように記入します。

- トリガー：コンテンツの追加後
- テキストフィールド：19

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e077d94ebe41765bcf7fdf84cdce8f23.png)
:::caution
テキストフィールドには「19」と記入していますが、こちらにはコンテンツ定義の「グループID」を記入します。 
今回は[コンテンツ定義を作成する](/ja/docs/tutorials/adding-a-topics/)にて作成した「お知らせ」コンテンツの追加後にメールを送るため「19」を記入しておりますが、こちらはご自身の環境により修正をお願いします。
:::

**参考: コンテンツ定義一覧画面**  
グループIDは、コンテンツ定義一覧画面で確認できます。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/55f5ff98f1cdf374437fc9bfc36bf6d5.png)

### 5. メール送信処理を記述する
次に、メール送信処理を記述します。

エディタ内にメール送信処理を記述していきます。
![Image from Gyazo](https://t.gyazo.com/teams/diverta/65e34913bddaeb4825d3605a56a22e88.png)
**メールを作成する処理を実装する**  
まずは、メールタイトル・本文を作成します。  

利用できる変数は下記となります。

| 変数名 | 型 | 説明
| :--- | :--- | :--- |
| topics_id |int | コンテンツID |

エディタに下記記入します。

```smarty
{*コンテンツデータ取得*}
{assign_array var='method_params'                  values=''}
{assign_array var='method_params.topics_group_id'  values=''}
{assign       var='method_params.topics_group_id.' value=19}{* トリガー設定時に指定したコンテンツ定義のIDを設定 *}
{assign       var='method_params.cnt'              value=1}
{assign_array var='method_params.topics_id'        values=''}
{assign       var='method_params.topics_id.'       value=$topics_id}
{assign       var='method_params.ignore_open_flg'  value=1}{* 非公開データでも取得出来るように指定する *}
{api_method
    var='topics_list'
    model='Topics' method='list' version='1'
    method_params=$method_params}
{assign var='topicsData' value=$topics_list.list.0}

{* タイトル *}
{assign var=mail_subject value=$topicsData.subject}
{* 本文 *}
{capture name=mail_body}
お知らせが追加されました。

詳細はこちらから確認してください。
{$smarty.const.ROOT_MNG_URL}/management/topics/topics_edit/?topics_id={$topicsData.topics_id}
{/capture}
{assign var=mail_body value=$smarty.capture.mail_body}
```

![Image from Gyazo](https://t.gyazo.com/teams/diverta/e8cc7129c74c69546a3d32b6765dbed5.jpg)

**メールを送信する処理を実装する**  
次にメールを送信する処理を作成します。
エディタに下記を追記します。

```smarty
{sendmail 
 to='YOUR_MAIL_ADDRESS@example.com'
 subject=$mail_subject
 contents=$mail_body}
```

:::caution
`YOUR_MAIL_ADDRESS@example.com` には送信先のメールアドレスを記入してください。
:::

![Image from Gyazo](https://t.gyazo.com/teams/diverta/8a337caa27a8f005cc8113e4eba45842.jpg)

### 6. カスタム処理を保存する 
処理の記述が完了したら、[追加する] ボタンをクリックして保存します。  

![Image from Gyazo](https://t.gyazo.com/teams/diverta/2c408c383626b5ed0fe76e0ff3ee90b5.png)
以上でカスタム処理の完成です。

## メール送信の確認
作成したカスタム処理の動作を確認します。  
設定したコンテンツ定義（今回の場合グループIDが19のコンテンツ定義）より、[追加]をクリックします。

![Image from Gyazo](https://t.gyazo.com/teams/diverta/261c5f5d0acf0792e67eb5716ad69f23.png)

コンテンツ内容を記入し、[追加する]をクリックします。  
![Image from Gyazo](https://t.gyazo.com/teams/diverta/b75dc50bcbda67b3d175b78f0d267bd0.png)
すると、カスタム処理に記載したメールアドレスへメールが届きます。  
![Image (fetched from Gyazo)](https://t.gyazo.com/teams/diverta/69d160540f1539be17014d91c184e5d2.png)
以上です。

## メールが送信されない場合の確認ポイント
メールがうまく送信されない場合、下記ドキュメントをご参照ください。  
- [メールが送信できない場合の確認方法を教えてください](/ja/docs/faq/how-do-i-fix-email-delivery-failure/)

## 注意点
呼び出し元が重複するカスタム処理を作成できません。
今回の場合、呼び出し元では下記を設定しております。
- トリガー：コンテンツの追加後
- テキストフィールド：19
そのため、別のカスタム処理で上記の呼び出し元を利用できませんのでご注意ください。
