Laravel:送信メールをshop.rakuten.co.jpに切り替える方法
Laravel:送信メールをshop.rakuten.co.jpに切り替える方法
書いて置かないと忘れそうなので備忘録です。
領収書発行システムでは発行した領収書(正確には領収書を作成するURL)をメールで顧客に送る仕様が必要です。
その際、Laravelに登録しているMailの設定をどうにかして変更しないといけません。
そのやり方についてのメモです。
Configの値を一時的に変更する
#仮定:テーブル[sendmails]に切り替える送信メールサーバーの設定が入っているものとする。
$mail = Sendmail::find($shop->id);
$config = array(
'driver' =>'smtp',
'host'=>$mail->server,
'port'=>$mail->port,
'from' =>$mail->mailaddress,
'name' => $mail->name,
'username' => $mail->loginid,
'password' => $mail->loginpass
);
#SMPT設定を置き換え※上書きではないのでこのController内だけ変化する
\Config::set('mail',$config);
$title ='送信メールのタイトル'
$mail_text ='テキストメールの文面'
$mail_html ='HTMLメールの文面'
$sign ='署名'
$to = [[
'name'=>'送信先名(お客様名)',
'email'=>'送信先アドレス(お客様メールアドレス)'
]]
#Mailにタイトルなどを渡す
Mail::to($to)
->send(new ReceiptMail($title,$mail_text,$mail_html,$sign));
$configに値を用意しておいて \Config::set('mail',$config);で一発!楽だぁ。
\Config::set('mail',$config);をしてもbootstrap\cache\config.phpは書き換わらない
本体を書き換えるのではなく、一時的に内容を読み替えて利用するだけなので便利です。
なので、各店舗用のメール設定を登録しておいて領収書発行の際に購入店舗も記載すると、購入した店舗用のメールアドレスで領収書を案内する事が出来ます。
※この設定を入れたテーブルが上の例では sendmails になります。
楽天市場の場合はURLの案内には気を付けよう
楽天の@shop.rakuten.co.jpで送信した場合でもURLを自由に送信できてしまいます。
例えば、自店舗へのリンクを貼って送信する事も可能なんです。
でも、ルール上は違反行為なので楽天市場へマスクアドレスの発行申請を行います。
そのルールに則った変換を行ったアドレスを案内すれば、ルールにも反せずお客様へ領収書URLを送付できます。
まとめ
直接案内した場合、楽天さんはそれが分かるのかな。
まぁ危ない橋は渡らないに限りますけどね。


