Customers Mail Cloudではメール送信に際して、SMTPとAPIの二種類を提供しています。昔からの使い慣れたSMTPを使っても良いですし、SMTPのポート制限されている場合でも使えるAPIを利用しても良いでしょう。
今回は対象をExcel(またはVBA)としてメール送信方法を紹介します。VBAから送信を行う場合はSMTPではなく、Web API経由で行うのが簡単です。
APIユーザを作成する
API設定画面にて、APIユーザを作成します。アクセス権限として、SMTPは必須になります。API経由での配信を行う場合はSMTPに加えて、HTTP-APIも有効にしてください。
API経由でのメール送信について
APIサーバについて
APIサーバのエンドポイントURLは契約しているプランによって異なりますのでご注意ください。
プラン名 | エンドポイントURL |
---|---|
無料トライアル | https://sandbox.smtps.jp/api/v2/emails/send.json |
Standardプラン | https://te.smtps.jp/api/v2/emails/send.json |
Proプラン | https://SUBDOMAIN.smtps.jp/api/v2/emails/send.json |
SUBDOMAINは、サービス利用開始時に申請いただいたものです
必要なライブラリについて
VBAの参照設定より Microsoft Script Runtime を指定します。また、VBA-tools/VBA-JSON: JSON conversion and parsing for VBAをダウンロードして、JsonConverter.basをインポートしてください。
変数を設定する
まずメール送信に必要な変数を準備します。
Dim params As New Dictionary params.Add "api_user", "api@smtps.jp" params.Add "api_key", "YOUR_API_KEY" ; メールの送信先です Dim toAddress(0) As New Dictionary toAddress(0).Add "name", "Tester" toAddress(0).Add "address", "user@smtps.jp" params.Add "to", toAddress ; メールの送信元情報です Dim fromAddress As New Dictionary fromAddress.Add "name", "Admin" fromAddress.Add "address", "info@smtps.jp" params.Add "from", fromAddress ; メールの件名と本文です params.Add "subject", "Test mail" params.Add "text", "Test mail body"
Dictinaryで設定しているキーについて 共通仕様 | Customers Mail Cloud を参照してください。
送信を行う
ではAPIサーバのエンドポイントURLと配信情報のパラメータを使ってメール送信を行います。メール送信APIはPOSTメソッドを使います。HTTPアクセスはMSXML2.ServerXMLHTTP.6.0を利用します。
Dim httpReq As Object Set httpReq = CreateObject("MSXML2.ServerXMLHTTP.6.0") Dim url As String url = "https://sandbox.smtps.jp/api/v2/emails/send.json"
そしてHTTPリクエストを実行します。
httpReq.Open "POST", url, False httpReq.setRequestHeader "Content-Type", "application/json" httpReq.send (JsonConverter.ConvertToJson(params)) ; レスポンス Debug.Print httpReq.responseText
送信が成功すると、下記のようにメールIDが返ってきます。
{"id":"\u003C1027790501.15820.1560515882392@mta01.sandbox.smtps.jp\u003E"}
エラーがあると、下記のようにエラー内容が返ってきます。
b'{"errors":[{"code":"02-001","field":"text","message":"text is required."}]}'
まとめ
Excelでメールアドレスをまとめて管理されている方も多いでしょう。そうしたメールアドレスの活用時にCustomers Mail CloudのWeb APIが役立ちます。SMTP接続はDLLなどを利用するので敷居が高いでしょう。APIをぜひ使ってみてください。今回はVBAを使いましたが、汎用的なHTTPアクセスを行っていますので、他のプログラミング言語でも簡単に実装できるでしょう。
さらに詳しい使い方についてはEmail Sending APIを参照してください。