Laravel5.6 메일 발송 기능의 제작 방법

8611 단어 PHPLaravel

하고 싶은 일


Laavel에서 메일 발송 기능을 실현하는 방법을 기록합니다.
컨트롤러로 만든 메일을 호출하여 메일 템플릿에 데이터를 반영하여 발송합니다.
예를 들면 ContactController의 컨트롤러가 있고 상담 기능과 같은 것으로 추진된다.

컨디션

  • PHP 7.1
  • Laravel 5.6
  • 참고 자료


    Mailtrap을 통해 Laavel에 대한 간단한 메일 보내기 테스트 이 실시 메일 발송 기능을 참고하여 테스트 메일을 발송하는 것을 목표로 한다.
    @ubonsa 통속적이고 알기 쉬운 글 감사합니다
    다음은 위 글Mailtrap의 계정 작성이 끝났고.env 파일도 개작하는 것을 전제로 한다.

    1. ContactController


    양식이 있으면 전송 버튼이 있고 store이 동작을 수행합니다.
    보내는 매개 변수는 다음과 같습니다.
    발신인
    전자 우편 주소
    컨텐트
    name
    email
    bodyContactController
    public function store(Request $request){
      // フォームからのリクエストデータ全てを$contactに代入
      $contact = $request->all();
    }
    

    2. 메일 클래스 만들기

    $ php artisan make:mail ContactMail
    
    위 명령을 실행한 후 app/MailContactMail.php 파일을 생성합니다.app/Mail/ContactMail.php
    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class ContactMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
        public function __construct()
        {
            //
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this->view('view.name');
        }
    }
    

    3. ContactMail.php 편집


    템플릿에서 폼에서 받은 요청 데이터를 펼치고 싶어서 편집ContactMail.php합니다.app/Mail/ContactMail.php
    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class ContactMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
        // 引数で受け取ったデータ用の変数
        protected $contact;
    
        public function __construct($contact)
        {
          // 引数で受け取ったデータを変数にセット
          $this->contact = $contact;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
            return $this
              ->from('[email protected]') // 送信元
              ->subject('テスト送信') // メールタイトル
              ->view('contact.mail') // どのテンプレートを呼び出すか
              ->with(['contact' => $this->contact]); // withオプションでセットしたデータをテンプレートへ受け渡す
        }
    }
    

    4. 템플릿 만들기

    ->view('contact.mail')와 상술한 정의를 내렸는데 이것은 resources/views에서 온 경로이기 때문에 resources/views/contact/mail.blade.php에 따라 파일을 제작했다.
    こんにちわ{{$contact->name}}さん
    問い合わせ内容は以下で受け取りました
    {{$contact->body}}
    

    5. 연락처 편집

    // 作成したメールクラスをuseする
    use App\Mail\CotactMail;
    use Illuminate\Support\Facades\Mail;
    
    public function store(Request $request){
      // フォームからのリクエストデータ全てを$contactに代入
      $contact = $request->all();
      Mail::to($contact->email)
                ->send(new ContactMail($contact)); // 引数にリクエストデータを渡す
    }
    
    자신의 환경에서Mailfathod와 notfound에 오류가 발생하여 추가use Illuminate\Support\Facades\Mail;했습니다.
    이상, 형식적으로 메일을 보내면 요청 내용을 반영한 메일 발송 기능이 있을까요?

    좋은 웹페이지 즐겨찾기