LoginSignup
27
29

More than 5 years have passed since last update.

PHPを使ってAmazon SESでHTMLメールを送信する方法

Last updated at Posted at 2015-01-14

PHPからAmazonのSES経由でHTMLメールを送信する方法をまとめました。

SESとは?

Amazonが提供するメール送信サービスです。
既にAWSを利用している場合、EC2やRDSで恩恵を受けているかと思いますが、SESも同様に低コストでスケーラビリティのあるメール送信サービスの実現が可能です。

詳しくはこちらを
 

対応リージョン

この記事を書いている2015年1月の段階ではまだ東京リージョンでの展開が無い為、海外のリージョンを使うことになります。

US East (N. Virginia) リージョン
US West (Oregon) リージョン
EU (Ireland) リージョン

が対応しているのでこの3つの中から選択する事になります。
 

費用

1,000 通当たり 0.10 USDで利用出来ます。

円換算すると

1,000 通で12.05円
(※2015年1月のレート)

1万通送っても120円ちょっとなのでかなり安いですね!
 

PHPからのSESメール送信

ようやく本題です。
SESをPHPから使う方法です。

コードを書く前に

AWS SDK for PHP をインストールが必要です。
手順はAWSのオフィシャルから確認してください
 

コード


//AWSSDK読み込み
require "aws.phar";

use Aws\Ses\SesClient,
use Aws\Ses\Exception\SesException,
use Aws\Common\Enum\Region;

//SES利用のイニシャライズ
$client = SesClient::factory(array(
  'key' => 'AWSのkey',
  'secret' => 'AWSのsecret',
  'region' => Region::US_WEST_2, //リージョン指定。US_West_2を利用
));

//HTMLメールの内容
$html_templete = '<b>SESからテスト送信</b>';

//HTMLメールのbodyと文字コードのセット
$body = array('Data' => $html_templete,'Charset' => 'iso-2022-jp');

//SESからメール送信
$mail = $client->sendEmail(array(

  //FromとToの設定
  'Source' => 'test_from@test.com', //FROMのメールアドレス設定
  'Destination' => array(
  'ToAddresses' => array('test_to@test.com'), //Toのメールアドレス設定
  ),

  //件名の設定
  'Message' => array(
   'Subject' => array(
   'Data' => 'SESからHTMLメール',
  ),

  //本文の設定
  'Body' => array('Html' => $body),
  ),
 )
);

//レスポンス受け取り
$response = $mail->toArray();
$message_id = $response["MessageId"];
$request_id = $response["ResponseMetadata"]["RequestId"];

以上となります。

27
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
27
29