Laavel 메일 발송 기능의 실현 중 메일랩과 Gmail의 SMTP 서버를 사용해 보십시오

컨텐트


웹 응용 프로그램을 만들 때 많은 메일 발송 기능이 필요하다고 생각합니다.
이번에는 라벨 5.8의 환경에서 이메일랩과 Gmail을 사용한 SMTP의 메일 발송 두 가지 모델을 사용하여 기능을 실시했기 때문에 그 실시 과정을 총괄하고 투고했다.

컨디션


macOS Mojave 10.14.6
Laravel Framework 5.8.33

1. SMTP 서버

  • 가상 SMTP 테스트 서버 mailtrap을 사용한 간단한 구현
  • 실제 이메일 주소를 사용하지 않아 이메일 트랩 사이트에서 내용 등을 확인할 수 있어 간편하게 발송 기능 테스트
  • 개발 단계에서 적절하게 입력한 메일 주소가 실제로 존재하더라도 발송하지 않음
  • Gmail을 사용한 SMTP 서버 구현
  • 실제 메일 발송
  • 2. 메일 트랩 사용 시 설정


    2.1 메일trap 계정 만들기


    메일 주소에 새로 등록하거나 기존 Gmail 또는 github 계정을 사용할 수 있습니다.
    https://mailtrap.io/register/signup?ref=header

    2.2 Laavel 설정에 SMTP 정보 반영


    2.2.1 설정치의 확인


    sign in 후 demo inbox 열기

    Integration에서 Laavel 선택

    SMTP settings 정보 env 또는 config/mail 을 입력합니다.php의 하나로 설정하기 (혹시 모르니까 두 개)

    2.2.2 실제 설정


    위에서 확인한 env 또는 config/mailphp의 값을 각 파일의 상응하는 부분으로 복사합니다
    .env
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.mailtrap.io
    MAIL_PORT=2525
    MAIL_USERNAME=4b5fb1796bf652  // コピペの内容のままで良い
    MAIL_PASSWORD=22c902aa6ac123  // コピペの内容のままで良い
    MAIL_FROM_ADDRESS=hoge@gmail.com  // どのアドレスから送信するかを記載
    MAIL_FROM_NAME=name  // 名前を適当に設定
    
    이상의 내용은 confing/mail입니다.php에서도 마찬가지로 설정
    설정이 완료되면 각종 캐시를 지웁니다
    $ php artisan cache:clear
    $ php artisan config:cache
    

    3. Gmail SMTP 사용 시 설정


    Gmail의 SMTP를 사용하는 경우 보안을 위해 Gmail 계정 설정을 변경해야 한다.
  • 낮은 안전성 응용 허가를 켜는 방법
  • 2단계 인증을 활성화하고 비밀번호를 적용하는 방법
  • 3.1 보안이 낮은 어플리케이션 라이센스를 설정하는 방법

  • 낮은 보안 어플리케이션에 대한 라이센스 사용
  • https://myaccount.google.com/lesssecureapps
  • 2단계 인증이 유효한 경우 열 수 없는 사양입니다.2단계 인증이 활성화된 경우 설정을 취소할 수 있지만 다음 중 2단계 인증이 유효할 때 암호를 적용하는 방법을 게시하는 것이 좋습니다
  • .

  • .env 파일은 다음과 같이 설정됩니다
  • .
    .env
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587
    MAIL_USERNAME=hoge@example.com  // メールアドレスを記載(下のFROMと同じで良い)
    MAIL_PASSWORD=hogehogehoge  // Gmailアカウントの生のパスワード
    MAIL_FROM_ADDRESS=hoge@example.com  // どのアドレスから送信するかを記載
    MAIL_FROM_NAME=name  // 名前を適当に設定
    
    이상의 내용은 confing/mail입니다.php에서도 마찬가지로 설정
    설정이 완료되면 각종 캐시를 지웁니다
    $ php artisan cache:clear
    $ php artisan config:cache
    

    3.2 2단계 인증을 활성화하고 비밀번호를 적용하는 방법

  • 2단계 인증의 유효성

  • https://myaccount.google.com/u/6/security?hl=ja
  • 로그인한 Google 계정 페이지보다 2단계 인증 프로세스를 더 효율적으로 수행
  • 어플리케이션 암호 게시
  • 간단히 말하면, env 파일에 설정된 MAILPASSWORD에 기재된 비밀번호 보내기
  • 로그인한 Google 계정 페이지의 보안에 따라 비밀번호를 적용합니다.
  • 선택 애플리케이션에서 메시지
  • 선택
  • 선택에 사용할 장치 선택
  • 설정이 끝나면 16개의 앱 비밀번호가 발행되기 때문에 env 파일의 MAIL로PASSWORD에 기재
  • 주) 모든 디버깅을 위한 응용 발행이 필요하며, 반복적으로 사용하면 인증을 통과할 수 없음을 주의하십시오.(local에서 사용하는 물건은 디자인에서 사용할 수 없음)

  • env의 설정값은'낮은 안전성 응용 허가를 켜는 방법'과 비교하면 MAILPASSWORD의 내용은 다릅니다.
    .env
    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.gmail.com
    MAIL_PORT=587   // 587にする
    MAIL_USERNAME=hoge@example.com  // メールアドレスを記載(下のFROMと同じで良い)
    MAIL_PASSWORD=hogehogehoge  // 発行したアプリパスワードの設定
    MAIL_FROM_ADDRESS=hoge@example.com  // どのアドレスから送信するかを記載
    MAIL_FROM_NAME=name  // 名前を適当に設定
    
    이상의 내용은 confing/mail입니다.php에서도 마찬가지로 설정
    설정이 완료되면 각종 캐시를 지웁니다
    $ php artisan cache:clear
    $ php artisan config:cache
    

    4.Mailable 클래스


    설정 값의 입력이 완료되면 다음은 기능면의 설치입니다
    Mailable 클래스에서 보낼 메시지의 정보와 내용을 설정할 수 있습니다

    4.1 Mailable 클래스 만들기


    다음 명령을 실행하면 app/Mail/SamleMail이 실행됩니다.php 생성
    이번에는 반 이름이 SampleMail이에요.
    $ php artisan make:mail {クラス名}
    # 今回、作成するクラス名
    $ php artisan make:mail SampleMail
    
  • 생성된 app/Mail/SAmpleMail의build() 방법으로 발송된 메일의 발송원 정보, 메일의 내용을 보충
  • 메일의 발송원, 메일의 내용에서 상황에 따라 변수를 사용하려고 하지만 변수를 사용하지 않는 경우와 2가지 상황을 설명한다
  • 4.2 변수를 사용하지 않고 결정된 송신원에서 결정된 내용을 발송할 때


    app/Mail/SamleMail.php
    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class SampleMail 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
              ->from('[email protected]') // 送信元
              ->subject('テスト送信') // メールタイトル
              ->view('mail.send'); // メール本文のテンプレートとなるviewを設定
        }
    }
    
    

    4.3 변수를 적용할 때


    이번에는 다음 예에서 Controller에서 다음 변수 $conntent를 받습니다
    $content = ['name' => 'fuga', 'mail' => ' [email protected] '];
    ※ Controller 측 설정은 다음 항목에서 설명
    app/Mail/SamleMail.php
    <?php
    
    namespace App\Mail;
    
    use Illuminate\Bus\Queueable;
    use Illuminate\Mail\Mailable;
    use Illuminate\Queue\SerializesModels;
    use Illuminate\Contracts\Queue\ShouldQueue;
    
    class SampleMail extends Mailable
    {
        use Queueable, SerializesModels;
    
        /**
         * Create a new message instance.
         *
         * @return void
         */
    
        // 引数で受け取る変数
        protected $content;
        // コンストラクタ設定
        public function __construct($content)
        {
            // 引数で受け取ったデータを変数にセット
            $this->content = $content;
        }
    
        /**
         * Build the message.
         *
         * @return $this
         */
        public function build()
        {
          return $this
              ->from('[email protected]') // 送信元
              ->subject('テスト送信') // メールタイトル
              ->view('mail.send') // メール本文のテンプレート
              ->with(['content' => $this->content]);  // withでセットしたデータをviewへ渡す
        }
    }
    
    

    5. Controller 설정


    Controller에서 대상 및 Mailable 클래스를 할당합니다.
    Controller
    use App\Mail\OrderMail;
    use Illuminate\Support\Facades\Mail;
    
    public function store(Request $request){
      // フォームからのリクエストデータ全てを$contentに代入
      $content = $request->all();
    
    // 特に変数を渡さない場合
    Mail::to($content->email)->send(new SapmleMail);
    // データの入った変数を渡す場合
    Mail::to($content->email)->send(new SampleMail($content));
    

    6. 메시지 본문 템플릿


    Mailable 클래스에 설정된view 메시지 본문을 만드는 템플릿
    views/mail/send.blade.php
    // withで変数を受け取った場合は変数を使用できる
    {{ $contact->name }} 
    メール送信完了
    

    7. 메일 보내기


    이로써 메일 발송 기능이 완성되었습니다.
    메일랩에 이런 느낌으로 나와요.

    좋은 웹페이지 즐겨찾기