メール送信機能を作成する
Last-modified: Fri, 07 Sep 2018 06:50:55 JST (2321d)
Top > メール送信機能を作成する
Laravel5.6では、メール送信機能はドライバを差し替えることで、AmazonSESなど外部サービスを利用できるようになっています。参考
ここでは、簡単にテキストメールを送信する機能を作成してみます。
(個人的にHTMLメールは好かないのもあるw)
- いつものように、ひな形を作成します。
php artisan make:mail SendRssMail
すると、App\Mail配下にひな形のファイルが作成されます。 - 中を編集していきます。ここでは単純に外部から必要なパラメタを渡してあげます。
public $mailto, $subject, $content, $mailfrom; /** * Create a new message instance. * * @return void */ public function __construct( $subject, $content, $mailfrom) { $this->subject = $subject; $this->content = $content; $this->mailfrom = $mailfrom; }
- メール送信部分はこんな感じになります。
/** * Build the message. * * @return $this */ public function build() { return $this->from($this->mailfrom) ->subject($this->subject) ->text('emails.sendrss') ->with([ 'content' => $this->content, ]); }
- text('emails.sendrss')の部分がメールテンプレート部分になります。
前半部分のemailsがディレクトリ名になります。
- text('emails.sendrss')の部分がメールテンプレート部分になります。
- ではテンプレートファイルを作成します。
resources\views\emails\sendrss.blade.php
で以下のように作成します。
拡張子は.blade.phpにしないと駄目のようです。{{$content}}
- はい。今回は$contentだけです。このようにwithで渡した変数が展開されます。
最後に、コントローラから渡します。try { Mail::to($mailto)->send(new SendRssMail($subject, $content, $mailfrom)); } catch (Swift_RfcComplianceException $e) { dump("RFC違反のメールです。:" . $mailto); }
Counter: 700,
today: 2,
yesterday: 0
このページの参照回数は、700です。