Customers Mail Cloud Java SDK(非公式)にて添付ファイル送信に対応しました

システムからメール送信を行う処理を実装することはよくあります。多くの場合、ローカルサーバからSMTPを使いますが、FaaSなどでSMTPポートがふさがれていることがあります。そうした時に便利なのがWeb API経由でのメール送信になります。

今回、非公式ではありますがJavaでCustomers Mail Cloudを手軽に使えるようにするSDKを更新しましたので、使い方を解説します。

コードについて

コードはgoofmint/Customers-Mail-Cloud-Java: Customers Mail CloudのJava用SDKですにて公開しています。ライセンスはMIT Licenseで、自由に利用、改変可能です。

共通処理

初期化は次のように行います。

String apiKey = System.getenv("API_KEY");;
String apiUser = System.getenv("API_USER");;
client =  new CustomersMailCloud(apiUser, apiKey);

契約内容の設定

契約状態によってメソッドが異なります。

  • トライアル client.trial();
  • スタンダード client.standard();
  • プロ client.pro(subdomain);

メール送信

まずメールオブジェクトを作成します。

CustomersMailCloudMail mail = client.getMail();
mail.subject = "Test mail with attachments";
mail.text = "Mail body with attachments";

CustomersMailCloudMailAddress toAddress = new CustomersMailCloudMailAddress();
toAddress.name = "User";
toAddress.address = "user@example.com";
mail.to = new CustomersMailCloudMailAddress[1];
mail.to[0] = toAddress;

CustomersMailCloudMailAddress fromAddress = new CustomersMailCloudMailAddress();
fromAddress.name = "Admin";
fromAddress.address = "info@smtps.jp";
mail.from = fromAddress;

添付ファイルは File クラスを使います。プロジェクトルートに test.pngREADME.md を用意しておきます。

import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.Path;
import java.io.IOException;

// Use existing files from project root
File testPng = new File("test.png");
File testPdf = new File("test.pdf");

// Add attachments
mail.addAttachment(testPng.getAbsolutePath());
mail.addAttachment(testPdf.getAbsolutePath());

そして、 send メソッドで送信を行います。

String id = client.send(mail);
System.out.println(id);

結果はIDが返ってきます。

<f23ec790-403f-11eb-a4d7-9ca3ba311822@mta03.sandbox.smtps.jp>

エラーの場合

エラーの場合は CustomersMailCloudException が返ってきます。

try {
  // 略
} catch (CustomersMailCloudException e) {
  System.err.println(e.getMessage());
}

この中にエラーメッセージが返ってきます。

まとめ

添付ファイルを付けた場合も、テキストファイルと同じ形で送信できます。なお、添付ファイルは10個までの制限があるので注意してください。

goofmint/Customers-Mail-Cloud-Java: Customers Mail CloudのJava用SDKです