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