Customers Mail Cloudではメール送信に際して、SMTPとAPIの二種類を提供しています。昔からの使い慣れたSMTPを使っても良いですし、SMTPのポート制限されている場合でも使えるAPIを利用しても良いでしょう。
今回はこの二つのメール送信方法について、C#から利用する方法を紹介します。
APIユーザを作成する
API設定画面にて、APIユーザを作成します。アクセス権限として、SMTPは必須になります。API経由での配信を行う場合はSMTPに加えて、HTTP-APIも有効にしてください。
SMTPを使ったメール送信について
標準ライブラリだけで実装します。SMTPサーバのアドレスは指定されたものに置き換えてください。まず必要な変数を定義します。
// SMTPサーバ経由での送信です string apiUser = "api@smtps.jp"; string apiKey = "YOUR_API_KEY"; string senderMail = "info@smtps.jp"; string recipientMail = "to@smtps.jp"; string smtpHost = "sandbox.smtps.jp"; // メール配信内容です string subject = "テストメール from Customers Mail Cloud"; string body = "こんにちは。\r\n\r\n改行を入れました。";
今回は標準ライブラリのSmtpClientを使います。SSLを有効にするのを忘れないでください。
// 標準ライブラリのSmtpClientを使います System.Net.Mail.SmtpClient sc = new System.Net.Mail.SmtpClient(); sc.Host = smtpHost; sc.Port = 10025; sc.EnableSsl = true;
次に先ほど定義したAPIユーザ、APIキーを使って認証情報を作成します。
// SMTPの認証設定です sc.Credentials = new System.Net.NetworkCredential(apiUser, apiKey);
後はメール送信を実行します。
// メールを送信します sc.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network; sc.Send(senderMail, recipientMail, subject, body); // 後片付けです sc.Dispose();
標準ライブラリなので簡単に実装できるでしょう。
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は、サービス利用開始時に申請いただいたものです
変数を設定する
変数はSMTPサーバ利用時とほぼ同等、SMTPサーバの代わりにエンドポイントURLを指定します。
// SMTPサーバ経由での送信です string apiUser = "api@smtps.jp"; string apiKey = "YOUR_API_KEY"; string senderMail = "info@smtps.jp"; string senderName = "送信元"; string recipientMail = "to@smtps.jp"; string recipientName = "User name"; string url = "https://sandbox.smtps.jp/api/v2/emails/send.json"; // メール配信内容です string subject = "テストメール from Customers Mail Cloud"; string body = "こんにちは。\r\n\r\n改行を入れました。";
配信内容はJSONで定義しますが、標準ライブラリでは別途クラスを定義する必要があり、今回は簡易化するために文字列で定義します。本来は Json.NET や DynamicJsonなどを使うのが良いかと思います。
string content = $@" {{ ""api_user"" : ""{apiUser}"", ""api_key"" : ""{apiKey}"", ""to"" : [ {{ ""name"" : ""{recipientName}"", ""address"" : ""{recipientMail}"" }} ], ""from"" : {{ ""name"" : ""{senderName}"", ""address"" : ""{senderMail}"" }}, ""subject"" : ""{subject}"", ""text"" : ""{body}"" }} ";
JSONの内容については 共通仕様 | Customers Mail Cloud を参照してください。
送信を行う
ではAPIサーバのエンドポイントURLと配信情報のパラメータを使ってメール送信を行います。メール送信APIはPOSTメソッドを使います。HTTPアクセスは標準ライブラリのSystem.Net.WebClientを利用しています。
System.Net.WebClient wc = new System.Net.WebClient(); wc.Headers[System.Net.HttpRequestHeader.ContentType] = "application/json;charset=UTF-8"; wc.Headers[System.Net.HttpRequestHeader.Accept] = "application/json"; wc.Encoding = System.Text.Encoding.UTF8; string response = wc.UploadString(new Uri(url), content); wc.Dispose();
送信が成功すると、下記のようにメールIDが返ってきます。
{ id: '<1053497219.15567.1558665761030@mta02.sandbox.smtps.jp>' }
エラーがあると、下記のようにエラー内容が返ってきます。
{ errors: [ { code: '02-001', field: 'text', message: 'text is required.' } ] }
まとめ
サーバ上の制限によってSMTPが使えない場合でもHTTP経由でメール配信が行えますので、APIをぜひ使ってみてください。今回はC#を使いましたが、汎用的なHTTPアクセスを行っていますので、他のプログラミング言語でも簡単に実装できるでしょう。
さらに詳しい使い方についてはEmail Sending APIを参照してください。