PHPとSendGridを使って添付ファイル送信する方法

PHPとSendGridを使ってファイルを添付したメールを送信する方法

この記事は Send Email Attachments Using Twilio SendGrid and PHP の抄訳です。

オンラインで注文を受けて請求書を送る、旅行日程表を送るなど、トランザクションメールにファイルを添付したい場合があります。特に、効率的なコミュニケーションを目指す企業は、このようなメールを積極的に活用しなくてはいけません。添付するファイルは、画像やビデオ、ドキュメントなど様々です。 Twilio SendGrind APIを使えば、シンプルな方法ですぐに実現できます。このチュートリアルでは、SendGridとPHPを使用して添付ファイルを送信する方法をご紹介します。

前提条件

ローカル開発環境に下記のものがインストールされていることを確認してください:

1. PHP version 7.0 or higher
2. Composer

また、こちらのページから、SendGridの無料アカウントを取得しておいてください。

はじめに

ターミナルで次のコマンドを実行し、プロジェクトを設定します:

$ mkdir demo && cd demo
$ touch email.php
$ composer require sendgrid/sendgrid vlucas/phpdotenv

上記のコマンドを実行することで、プロジェクトファイル一式を保存するためのdemoというフォルダが作成されます。また、プロジェクトのビルドに役立つ2つのパッケージがインストールされます。vlucas/phpdotenvパッケージは環境変数をアプリケーションにロードするために使用し、sendgrid/sendgridパッケージはPHPアプリケーションからSendGrid APIへアクセスする機能を提供します。

SendGridのAPIキーの取得

メールを送信するためには、SendGridのAPIキーが必要です。SendGridでアカウントを作成した後、ダッシュボードの Settings > API Keys でAPIキーを作成します。下図のように、必ず Full Access を選択してください:

APIキー

.env ファイルを作成するため、ターミナルで以下のコマンドを実行してください。

SENDGRID_API_KEY= your_sendgrid_api_key

次に、以下のように入力し、APIキーの値をペーストしてください。

$ touch .env

ファイルを添付したメールを送信する

お好きなコードエディタで、email.phpに以下のコードを追記します。

<?php
require 'vendor/autoload.php';
 
$dotenv = Dotenv\Dotenv::create(__DIR__);
$dotenv->load();
 
$email = new \SendGrid\Mail\Mail();
$email->setFrom("test@example.com", "Test User");
$email->setSubject("Send Email Attachments with Twilio SendGrid");
$email->addTo("felistaswaceera@gmail.com", "Example User");
$email->addContent(
  "text/html",
  "How easy can this be?"
);
 
$file_encoded = base64_encode(file_get_contents('test.pdf'));
$email->addAttachment(
  $file_encoded,
  "application/pdf",
  "test.pdf",
  "attachment"
);
 
$sendgrid = new \SendGrid(getenv('SENDGRID_API_KEY'));
 
try {
  $response = $sendgrid->send($email);
  print 'Email sent successfuly' . "\n";
  print 'Status Code: ' . $response->statusCode() . "\n";
} catch (Exception $e) {
  echo 'Caught exception: '.  $e->getMessage(). "\n";
}

上記のコードは、設定された環境変数をロードし、setFromなどのメソッドを呼び出して、宛先にメールを送信するために使用するSendGridのMailクラスをインスタンス化します。

テストする

プロジェクトのルートディレクトリにPDFファイルを置いてください。そしてコード内のtest.pdfを追加したPDFファイルの名前に変更します。

ターミナルで、 php email.phpとコマンドを実行してください。そしてメールボックスに新着メールが届いているか確認してみましょう!

新着メール

ぜひお試しください!

まとめ

このチュートリアルでは、Twilio SendGridとPHPを使用してメールで添付ファイルを送信する方法をご紹介しました。ぜひお試しください!

メールを成功の原動力に

開発者にもマーケターにも信頼されているメールサービスを利用して、
時間の節約、スケーラビリティ、メール配信に関する専門知識を手に入れましょう。