読者です 読者をやめる 読者になる 読者になる

笑いと統計学をつまみに日本酒と献血を楽しむ人が書くブログ

お笑いについて思った事を書きます,統計学・プログラミングについて勉強した事を書きます.美味しいお酒を見つけたらメモがてら書きます.献血ルームに行ったらメモがてら書きます.

Mandrill API をGoogle Apps Script(GAS)から操ってメールを送信してみたら意外に簡単だったというお話

最近お仕事をプライベートの切り替えがうまくつかない.
このブログを書いている時間はどっちの時間?
どうも僕です.

いきなり質問ですが,Mandrillというメール配信サービスを知っています?
2~3通メールを送るのであれば,いつも通りGmailから送ればよいですが,
営業用のステップメールやメルマガを送ろうとすると一日何百通も送ることになり,これはスパム扱いになる可能性があります.

そうすると,メールの到達率がどんどん下がっていき,送っているつもりが全く相手に届いてなかった!という危険性が出てきます.
そのためにはIP レピュテーションを意識したメール送信の仕組みを考えなければいけないのですが,
これは結構大変なので,多くの企業や人は外部のメール送信サービスを利用することになると思います.

その中でも評判が高いのがMandrillです.
月間12,000通までなら無料でメールを送信できます.

またAPIもちゃんとあるので,外からメールを管理できます!はい便利.
今回はGoogle apps script(GAS)からMandrill apiを使ってメールを送るということをやってみます.


まずはMandrillに登録

APIを使うにあたって,Mandrillに登録が必要です.
https://www.mandrill.com/signup/から登録します.

こんな画面です.
f:id:chan_ume:20161010193419p:plain

登録画面にいくと,
f:id:chan_ume:20161010193427p:plain
「え?こんなポップ?笑」と笑ってしまいました.さっきのシックな画面とは大違いです.
ここから必要事項を記入していってください.

何個も入力する事項があるので,結構面倒くさいです.あと海外のサービスなので当然英語です.

登録後ログインしたら,まずはMandrillを有効にします.
Account >> Transactionalにから有向にできます.
f:id:chan_ume:20161012220148p:plain

その後,Mandrillのページへいきましょう.
f:id:chan_ume:20161012220308p:plain

こんな感じのダッシュボードに来たらOKです.
f:id:chan_ume:20161012220447p:plain


その後左メニューの「settings」からAPIを使うためのkeyが保存できます.
このkeyがないとAPIを使うことができないので,どこかにコピペしておきましょう.


お使いのドメインからメールが送れるように設定が必要

APIのkeyは手に入れましたが,これだけではメールは送れません.

メールを送信するドメイン側で,Mandrillで設定したメール送信を許可しなければいけません.
まあそうですよね.これをしないとなりすましメールがバンバン送れることになってしまいますから……

Mandrillからのメールを認証するためには,DKIMSPFを設定しなければいけません.

ここからはお使いのドメインサービス(お名前.comだったりvalue domainだったり)側で設定が必要です.

ドメインサービス側で必要な設定は,settings >> Domainsから確認できますので,お使いのドメインサービス上で設定お願いします.

たぶん「(ドメインサービス名) DKIM SPF」とかでググれば出てくると思います.

Google Apps scriptのサンプルコード

さっそくサンプルコードを紹介します.

function test(){
var url = "https://mandrillapp.com/api/1.0/messages/send.json";
var your_key = PropertiesService.getScriptProperties().getProperties().your_key;
var from_email = "送信する側のメールアドレス";
var to = [{
    "email": "送信する相手のアドレス",
    "name": "送信する相手のお名前"
}];

var params = {
    "key": your_key,
    "message": {
        "from_email":from_email,
        "to":to,
        "subject": "(件名)Mandrill APIからメールを送信",
        "text": "(本文)Mandrill apiからメールを送信してみました."
    }
};

var payload = JSON.stringify(params);
  
var options = {
    'method': 'post',
    'payload': payload,
    'contentType' : 'application/json'
};

var response = UrlFetchApp.fetch(url, options);
}

はい,めちゃくちゃ簡単ですね.

from:送信する側のアドレス
to:送信相手のアドレス

など必要な情報を任意に入力したら,あとは対象のURLにPOSTしてあげるだけです.
APIのkeyはコードにベタ書きはあまりよろしくないので,プロパティで管理しています.