---
title: Kurocoからのメール送信に任意のメール配信サービスを使用する(Mailchimp)
description: トリガ「デフォルトのメール送信方法（SendGrid）を代替」を利用すると、SendGridの代わりに、blastengine、Mailchimp、Amazon SESなどの任意のメール配信サービスを利用して、通知や招待のメールを送信できます。本チュートリアルではその例として、SendGridによるメール送信をMailchimpに代替する手順を紹介します。 
---

## 概要
トリガ「デフォルトのメール送信方法（SendGrid）を代替」を利用すると、SendGridの代わりに、blastengine、Mailchimp、Amazon SESなどの任意のメール配信サービスを利用して、通知や招待のメールを送信できます。  

本チュートリアルではその例として、SendGridによるメール送信をMailchimpに代替する手順を紹介します。

### 学べること
以下の手順で任意のメール配信サービスを使用したメール送信を実装します。
- [Mailchimpの設定](#mailchimpの設定)
- [Kurocoの設定](#kurocoの設定)
- [動作の確認](#動作の確認)

### 前提条件

:::info
本チュートリアルではメールの送信にMailchimpのTransactional APIを使用します。  
サービスの詳細は[Mailchimp](https://mailchimp.com/)とその[APIドキュメント](https://mailchimp.com/developer/transactional/guides/quick-start/)を確認してください。  

また、SPF/DKIMの設定をするのでfromのメールに使用するドメインは自身が所有しているものを利用することとします。
:::

:::caution
SendGridを利用しない場合、配信の[トラッキング機能](/ja/docs/management/notification-tracking/)(配信、メールバウンス、開封率、クリック数)はご利用できませんのでご注意ください。
:::

:::caution
SendGridを利用しない場合、メール送信リクエストの記録は[メールログ](/ja/docs/management/mail-log-list/)ではなく、[APIリクエストログ](/ja/docs/management/api-request-log-list/)に保存されます。ログの詳細は、SendGridを利用した場合と同様に、ご利用のメール配信サービス側のログをご確認ください。
:::

## Mailchimpの設定
### アカウント登録
まずは[Mailchimp](https://mailchimp.com/)にアクセスして、アカウント登録します。

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

### APIキーの取得
アクティベートが完了し、アカウントにログインしたら[Automations]->[Transactional email]から[Launch App]をクリックしてダッシュボードにアクセスします。  

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

[Settings]をクリックします。  

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

[Add API key]をクリックします。  

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

APIキーが表示されるのでメモします。

### 送信ドメインの追加
次に、メールの送信元となるドメインを追加し、認証及び、SPF/DKIMを設定する必要があります。 

[Domains]タブをクリックし、送信元となるドメインを入力して[Add]をクリックします。  

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

追加したドメインと、ドメインの使用に必要な設定が表示されるので、[View details][View DKIM settings][View SPF settings]をクリックして、必要なDNSを設定します。  

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

#### Verified Domain
ドメインの認証はドメインのTXTレコードに指定された値を設定します。  

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

#### DKIM Settings
DKIMは`指定されたセレクタ._domainkey.ドメイン名`のTXTレコードに指定された値を設定します。  

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

:::caution
VALUEの長さが設定できる文字数を超える場合はTXTレコードを分割して登録する必要があります。  
対応が必要な場合はドメイン管理サービスに問い合わせて設定してください。
:::

#### SPF Settings
SPFレコードはドメインのTXTレコードに指定された値を設定します。  

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

それぞれ設定すると以下のようになります。  
※キャプチャはお名前ドットコムの場合の例です。

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

[Test DNS Settings]をクリックして、全ての認証が確認できたら設定は完了です。  

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

:::caution
MailChimpのFreeプランでは、送信ドメインに登録されて、全ての認証が完了したドメインに対してのみメールの送受信が可能です。  
全てのメールアドレス宛への送信を許可する場合は有料プランを契約してください。
:::

## Kurocoの設定
### シークレットを登録する
Kurocoの管理画面にアクセスし、[環境設定] -> [シークレット]をクリックします。  

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

[追加]をクリックします。  

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

Mailchimpのダッシュボードで確認したAPIキーとを登録します。

|項目|値|
|:--|:--|
|名前|MAILCHIMP_API_KEY|
|値|MailchimpのAPIキー|

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

以上でMailchimpを利用する準備が整いました。

### カスタム処理を登録する
Mailchimpを利用する準備ができたら、SendGridによるメール送信をMailchimpに代替するカスタム処理を書きます。

[オペレーション] -> [カスタム処理]をクリックします。

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

[追加]をクリックします。  

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

以下のように設定します。

|項目|値|
|:--|:--|
|タイトル|sending_email_with_mailchimp|
|識別子|sending_email_with_mailchimp|
|トリガ|デフォルトのメール送信方法（SendGrid）を代替|
|処理|以下の内容|

```smarty title="sending_email_with_mailchimp"
{* Set Request Headers *}
{append var=headers value="Content-Type: application/json"}

{* Set Body *}
{assign var='payload' value=$payload|@json_decode}
{assign_array var='body' values=""}
{secret var='body.key' key='MAILCHIMP_API_KEY'}
{assign var='body.message.from_email' value="noreply@kuroco-mail.app"}
{assign var='body.message.subject' value=$payload.subject}
{assign var='body.message.text' value=$payload.text_part}
{assign_array var='to' values=""}
{assign var='to.email' value=$payload.to}
{assign var='to.type' value="to"}
{append var='body.message.to' value=$to}

{* Send Request *}
{api
    endpoint="https://mandrillapp.com/api/1.0/messages/send"
    method='POST'
    headers=$headers
    body=$body
    var=response
    status_var=status
}

{logger msg1="mailchimp_mail_log" msg2=$body msg3=$response}
{assign var="is_mail_sent" value=true}
```

:::caution
`noreply@kuroco-mail.app`の部分は自身のメールアドレスに変更してください。
:::

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

入力ができたら[追加する]をクリックしてカスタム処理を追加します。

## 動作の確認
実際にKurocoからのメールを送信してみます。  
動作の確認のため、パスワードリマインダーを使用してみます。

Kurocoのログイン画面にアクセスし、[パスワードを忘れた場合はこちら]をクリックします。  

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

メールアドレスを入力して、[送信する]をクリックします。 

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

:::caution
Freeプランを利用している場合、宛先のメールアドレスはMailchimpの送信ドメインで認証したドメインである必要があります。
:::

Mailchimpの[Activity](https://mandrillapp.com/activity)を確認すると、Mailchimpからメールが送信されたことが分かります。  

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

以上で、任意のメール配信サービスを利用する設定は完了です。

## 関連ドキュメント
- [カスタム処理に利用できるトリガと変数の一覧](/ja/docs/reference/trigger-variables/)
- [Smartyプラグイン](/ja/docs/reference/smarty-plugin/)
- [KurocoのSmartyで利用可能なPHP関数](/ja/docs/reference/smarty-php-function/)