Laravel のログインパッケージ Confide のパスワードリセット通知メールをテキストメールとして送信する

仕事で関わっているプロジェクトで Laravel のログインパッケージ Confide を使用しているのですが、パスワードリセット操作をした際にユーザに送信されるメールは、デフォルトだと Content-Type: text/html で送信されてしまいます。
これだとなにがまずいかというと、ユーザが @softbank.ne.jp などのキャリアメールを使用している場合に本文が添付ファイルとして送信されてしまいます。
さらに、charset が UTF-8 に設定されているため文字化けしていて読めないメールが届いてしまいます。

そこで、パスワードリセットの通知メールなんて、Content-Type: text/html で送るほどでもないので、text/plain に変えたいなーと思いました。

最初は、メール送信をしているメソッド ConfideUser#forgotPassword をオーバーライドしないとダメかなーと思っていたのですが、コードをよくよく読んでいくと config 変更するだけでいけそうということでやってみました。

結局、Confide も Swift Mailer を使ってメールを送信しているだけなので、渡す view の中身に気をつけてやればよしなにやってくれるということでした。

関係しそうなコードはこのへん。

https://github.com/Zizaco/confide/blob/master/src/Confide/EloquentPasswordService.php#L176
https://github.com/illuminate/mail/blob/master/Mailer.php#L328-L330

というかんじでした。
もちろん、text/html メールを送りたければ key の名前を html にすれば良いと思います。

なお、Confide の導入については @localdisk さんのLaravel のログインパッケージ Confideの解説(実践編)がとても親切です。

忘備録も兼ねてのポストでした。

高専卒→大学編入中退→起業→転職を経て、ソーシャルゲームを作ったあと、とあるアプリのサーバサイドエンジニアをやっています。 技術の未来予測とかデザインのリノベーションとか、おぎやはぎとかネギトロ丼が好きです。 猫飼いたい。 twitterは@serimaです。お気軽にfollow/unfollowどぞ(゚∀゚)

下の「いいね」ボタンを押すと、やる気パラメータが+1!


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です