2018-08-30に更新

CakePHP3でEmailのfromの共通設定をDBで指定する

CakePHP3はapp.phpにてメール送信のfromのデフォルトを簡単に設定できる。

固定ならそれで問題ないのだが、問題はDBの設定でfromを指定したい場合。

bootstrap.phpを見てみると、app.phpの設定はConfigure::consumeで削り取られており、
あとでConfigure::writeをしてもfromを動的に反映させることができない。
Emailのクラスを見ても設定できる方法はない。

しかしよく見ると、EmailにはStaticConfigTraitが使用されている。
これを利用することでfromのデフォルトを動的に指定することができる。
下記のようなコードをアプリケーションの共通処理で行っておけば良い。

$keys = Email::configured();
foreach ($keys as $key) {
    $emailConfig = Email::config($key);
    $emailConfig['from'] = $config->from_setting;
    Email::drop($key);
    Email::config($key, $emailConfig);
}

設定は変更できないので、丸々入れ替える形。

ツイッターでシェア
みんなに共有、忘れないようにメモ

だら@Crieit開発者

Crieitの開発者です。 Webエンジニアです(在宅)。大体10年ちょい。 記事でわかりにくいところがあればDMで質問していただくか、案件発注してください。 業務依頼、同業種の方からのコンタクトなどお気軽にご連絡ください。 業務経験有:PHP, MySQL, Laravel, React, Flutter, Vue.js, Node, RoR 趣味:Elixir, Phoenix, Nuxt, Express, GCP, AWS等色々 PHPフレームワークちいたんの作者

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント