XOOPSからAmazon SESを使う

毎週金曜日にメールニュースを発刊しています。ながらく自前のメール配信プログラムを使っていたのですが、XOOPS Cube Legacy 2.2の標準機能である「メールジョブ管理」も立派に機能する、というか自作のものよりも素晴らしい出来映えであることがわかったので、そちらにシフトしました。

SMTPサーバのバックアップとしてAmazon SESを使えるよう事前にチェックしたのでここにメモしておきます。

  1. 管理画面経由(ただしソースコード改変が必要)

管理画面から「互換モジュール → XOOPSコンフィグ → メール設定」へと進みます。現れる「プリファレンス - メール設定」画面にて「メール送信方法」を"SMTPAuth"としたうえで、SMTPサーバアドレス、SMTPAuthユーザ名、SMTPAuthパスワードにAmazon SESに接続するための情報を入力します(参考「Q: Amazon SES SMTP インターフェイスはどのように使用すればよいのですか?」 | AWS Simple Email Service FAQs)

ただし、これだけでは接続できませんでした。XoopsMultiMailer::XoopsMultiMailer (/class/mail/xoopsmultimailer.php)に1行追加する必要があります。具体的には

if ($xoopsMailerConfig["mailmethod"] == "smtpauth") {

が真のとき実行されるブロックの中に

$this->SMTPSecure = 'tls';

を追加します(参考:「PHPMailerによるAmazonSESのSMTPを使った送信」、"Connecting to the Amazon SES SMTP Endpoint")。ソースコードをいじらないというポリシーには反しますが、もともとレンタルサーバにSMTP接続できなくなったときのバックアップなので、緊急手段的にはこれでよい感じです。

  1. ワンファイルハック(できませんでした)

UserMailjobObject.Send というデリゲートがあり、メール送信時に何らかの機能を追加することができます。元々のメール送信関数(User_MailjobSendAction::sendMail())を削除し、代わりにAmazon SESを使う処理をプリロードにて定義すればよいと思ったのですが、User_MailjobSendAction::sendMail()は無名デリゲートなので外から削除できません。reset()によって強制的に削除することはできますが、なんだかまっとうな方法ではないように思えたので、ひとまず放置。

 


友達に伝える
タグ: XOOPS AmazonSES
作成: 2013/11/25 by:koji


XOOPS(pico)でMarkdownを使う

Tech

カスタムモジュールのRSSフィードを出力する

新規ユーザー登録(無料)

  • メールニュース[週刊起-動線]の購読
  • コメントなどの投稿
  • ココロミの利用
  • 一部コンテンツの購読

ログイン

コメント

タグ(キーワード)