Customers Mail Cloud用のPHPライブラリで添付ファイル付きメールを送信する

PHPでメール送信を行う際にはPHPMailerやmb_send_mailを使うのが基本だと思いますが、環境によってはSMTPが使えない場合もあります。そうした時にはWeb API経由でのメール送信が便利です。

Customers Mail Cloudにはメール送信用のAPIが用意されていますが、今回はさらに手軽に使いやすくするライブラリを開発したので、添付ファイル付きメールの送信方法を紹介します。

customers-mail-cloud/php-sdk - Packagist

インストール

インストールは composer コマンドで行います。

composer require customers-mail-cloud/php-sdk

使い方

まずライブラリをインポートします。

require_once 'vendor/autoload.php';

use CustomersMailCloud\CustomersMailCloud;

次に初期化します。 Node.jsでメールを送信する - Email Sending API - Customers Mail Cloud ブログ ブログを参考にAPIユーザ、APIキーを作成してください。

$api_user = 'API_USER';
$api_key  = 'API_KEY';
// Initialize client
$client = new CustomersMailCloud($api_user, $api_key);

Web APIのエンドポイントは契約ごとに異なります。それを指定します。デフォルトは sandbox です。

$client.sub_domain = 'pro';

後はメール送信に必要な宛先、送信元、件名、本文をそれぞれ指定します。上記のエンドポイントを含め、キーチェーンメソッドで連結可能です。

// Create and send email
$email = $client->transaction_email();

$email->add_to('recipient@example.com', 'Recipient Name', [
    'role' => '担当者',
    'department' => '技術部'
]);
$email->set_from('sender@example.com', 'Sender Name');

$email->add_to($this->testConfig['cc'], $this->testConfig['to_name'], [
    'role' => '別な担当者',
    'department' => '営業部'
]);
$email->subject = 'Test Email';
$email->text = 'This is a test email.';
$email->html = '<p>This is a <strong>test email</strong>.</p>';

添付ファイルを付ける場合には、 attachments に対してファイルパスを指定します。添付ファイルは10個まで指定できます。

$email->attachments = ['file1.pdf', 'file2.jpg'];

ここまでで準備ができたので、メール送信を行います。エラーがあればエラーとして検出可能です。

try {
  $success = $email->send();
  if ($success) {
      echo "Email sent! ID: " . $email->id;
  }
} catch (CustomersMailCloudError $e) {
    echo "API Error: " . $e->getMessage();
} catch (Exception $e) {
    echo "Error: " . $e->getMessage();
}

コードについて

コードは goofmint/CustomersMailCloud-php: PHP SDK for Customers Mail Cloudで公開しています。不具合などがあれば、ご指摘ください。なお、現状のSDKは非公式になるので、公式サポートへの問い合わせはご遠慮ください。

まとめ

PHPからメール送信を行う際に、ライブラリを使うことでとても簡単に実装ができます。ぜひお試しください。