システムからメール送信を行う処理を実装することはよくあります。多くの場合、ローカルサーバから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.png と README.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です
