LoginSignup
5
3

More than 5 years have passed since last update.

EC-CUBE 2系から SES でメールを送信する

Last updated at Posted at 2017-07-08

2010年に EC-CUBE 2系をベースに構築したシステムがあり、さくらの専用サーバ(ベーシック)上で稼働している。

システムも、サーバもさすがに老朽化が進んできていて、メンテナンスを継続できないので、新規システムをフルスクラッチで制作し、AWS 上で稼働させることにしたい。

ただ、システムを一から作り直すには時間が足りないので、まず現行システムをそのまま AWS に移行させる。そこまでが第1フェイズ。

AWS 上での安定運転を確認してから、おもむろにシステム制作に着手し、リリースする。これが第2フェイズ。

第1フェイズでは、現行システムが1台の物理サーバで兼務している各機能(ただしストレージ用途にはもう1台、別の物理サーバがある)を、AWS のそれぞれのサービスに分担させる(もちろん最小限の改修は必要)。

  • EC2 - Web/APサーバ
  • RDS - データベース
  • S3 - ストレージ
  • SES - メールサーバ

しかし、SES で数時間ハマった。

EC-CUBE 2系では、メール送信で内部的に PEAR を使用している。いろいろ設定を変えてやってみたが、これがうまく SES と連携してメールを送信することができない。

最終的になんとかメール送信までこぎつけたが、その設定とカスタマイズは次のようにした。

  • 管理画面にログインし、
    • SMTP_HOST を "tls://email-smtp.us-west-2.amazonaws.com" に設定
    • SMTP_PORT を "465" に設定
  • /data/class/SC_SendMail.php を以下のように変更
/data/class/SC_SendMail.php
function getBackendParams($backend) {

  switch ($backend) {

    /* 省略 */

    case "smtp":
    default:
      $arrParams = array(
        'host'     => $this->host,
        'port'     => $this->port,
        'auth'     => TRUE,          // 追加
        'username' => SES_USER,      // 追加
        'password' => SES_PASSWORD   // 追加
      );
      break;
  }

  return $arrParams;
}

SMTP_HOST を "tls://" で始めるのがポイント。これがないとどうやっても STARTTLS コマンドを送出できない。また、ポート番号は 465 しか効かなかった。587 でがんばっても、たぶん徒労。あ、あと管理画面からパラメータを設定するときは、両端の " を忘れないようにする。

EC-CUBE 2系から SES を使用してメールを送信しよう…などと考える人はまずいないと思うけど、万が一にもありえないとは言い切れないので、参考のために記録を残しておく。

5
3
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
5
3