FuelPHPでAWSのSESを使ってメール送信する

スポンサーリンク

はじめに

まずはじめに失敗談。
fuel-amazon-ses という FuelPHPでSESを扱うパッケージがあります。

rob-mccann/fuel-amazon-ses
FuelPHP package for Amazon SES. Contribute to rob-mccann/fuel-amazon-ses development by creating an account on GitHub.

例えば下記などでも紹介されていますが、結論から言うと自分の環境ではうまく使えませんでした。

【実践FuelPHP】FuelPHPでAWSのSESを使用する | DevelopersIO
アクションに対してメールを送信したい… FuelPHPで処理に対する確認や通知をメールで送りたくなることは多々あるはず。 FuelPHPには便利なEmailパッケージが用意されているけど、サーバ側で送信するとそこそこ …

ということで、自分の場合は PHPMailer を使って SES 経由でメールを送信するようにしました。

FuelPHPでPHPMailerを使う

インストール

PHPMailerのインストールですが、composerでインストールできます。
まず、composer.jsonrequire に下記のように phpmailer の記載を追加します。

{
    "require": {
        "phpmailer/phpmailer": "~5.2"
    },
}

追加したら composer をアップデートします。

% php composer.phar update 

すると、fuel/vendor/phpmailer 以下に PHPMailer がインストールされ、使える状態になります。

使用方法

実際の使用例です。

$mail = new PHPMailer();
$mail->isSMTP();
//$mail->SMTPDebug = true;
$mail->SMTPAuth   = true;
$mail->CharSet = 'utf-8';
$mail->SMTPSecure = 'tls';
$mail->Host       = $config['host'];
$mail->Port       = $config['port'];
$mail->Username   = $config['username'];
$mail->Password   = $config['password'];

$mail->setFrom($args['from']);
$mail->addAddress($args['to']);
$mail->Subject    = $args['subject'];
$mail->isHTML($is_html);
$mail->Body     = $args['body'];
if ($is_html) {
    $mail->addStringEmbeddedImage($args['image'], "image", 'xxx.png');
    $mail->AltBody = $args['altbody'];
}

try {
    $mail->Send();
} catch (Exception $e) {
    Log::error(sprintf("SES sendmail failure: %s", $args['to']));
}

コメント

タイトルとURLをコピーしました