본문 바로가기
IT/PHP

Laravel - 이메일 보내기

by Sungjun_ 2021. 5. 4.

laravel.kr/docs/8.x/mail#generating-mailables

 

라라벨 8.x - 메일

라라벨 한글 메뉴얼 8.x - 메일

laravel.kr

기본적으로 위 문서를 참고해서 만들었습니다.

 

php artisan make:mail SendEmail

 

위 명령어로 클래스를 생성해줍니다.

SendEmail 부분은 원하시는 클래스 이름 아무거나 넣어도 상관 없습니다.

 

현재 만들려고 하는 이메일 시스템은 회원가입을 할 때 이메일 검증을 하려고 보내는 것입니다.

 

<?php

namespace App\Mail;

use App\Models\User;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class SendEmail extends Mailable
{
    use Queueable, SerializesModels;

    protected $user;

    /**
     * Create a new message instance.
     *
     * @param User $user
     */
    public function __construct(User $user)
    {
        $this->user = $user;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        $user = $this->user;
        return $this->view('emails.send-email', compact('user'))
            ->subject('이메일 확인');
    }
}

 

SendEmail 클래스를 위와 같이 해주었습니다.

view()에서 emails.send-email은 이메일을 보낼 때 보여줄 내용 부분입니다.

subject()는 이메일의 제목입니다.

 

<div>
    환영합니다.{{$user->name}}
</div>

 

send-email.blade.php 파일입니다.

일단 간단하게 환영인사와 유서 이름을 출력하게 했습니다.

 

그리고 컨트롤러로 이동해서

public function register(Request $request)
    {
        $validation = $request->validate([
           'name' => 'required',
           'email' => 'required',
           'password'=> 'confirmed|required'
        ]);

        $user = new User();
        $user->name = $validation['name'];
        $user->email = $validation['email'];
        $user->password = Hash::make($validation['password']);
        $user->save();

        Mail::to($user)->send(new SendEmail($user));

        return redirect()->route('home');
    }

 

register 메서드 부분을 위와 같이 작성했습니다.

Mail::to($user) 부분에 사용자 정보가 들어가고, 수신자가 지정되면 send()에 데이터를 넘기고 메일을 보냅니다.

 

그리고 .env 파일을 열어줍니다.

MAIL_MAILER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=user_name@gmail.com
MAIL_PASSWORD=user_password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=hello@example.com
MAIL_FROM_NAME="${APP_NAME}"

 

위와 같이 입력해주는데

이메일과 비밀번호는 자신의 구글 이메일과, 비밀번호입니다.

그리고 MAIL_FROM_ADDRESS, MAIL_ENCRYPTION 부분을 null로 해두면 에러가 발생하기 때문에 꼭 입력해줍시다.

 

php artisan config:cache

 

위 명령어로 캐시를 초기화 해주고, 다음으로 서버를 재시작해줍니다.

그렇지 않으면 에러가 발생합니다. 꼭 해주세요.

 

myaccount.google.com/lesssecureapps?pli=1&rapt=AEjHL4MGJOsBB5yvpvytl2bYru9SX-XxJq6J2ypZqg-NnwwD9F1dxbMMCnG2NbVHgoJp2E2N_93pjrt80zvGZFua1ksdewd1fA

 

로그인 - Google 계정

하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인

accounts.google.com

위 링크로 들어가 보안 수준 낮은 앱 허용을 사용으로 바꿔주세요.

 

그리고 회원가입 화면에서 회원가입을 진행하고, 이메일 수신함을 확인하면 메일이 온 것을 확인할 수 있습니다.

 

수신 메일

 

 

 

 

이메일로 확인 링크를 보내는 방법은 공부하고 추후에 따로 올리도록 하겠습니다.

'IT > PHP' 카테고리의 다른 글

Laravel - 이메일 인증  (0) 2021.05.06
Laravel - faker 한글  (0) 2021.05.03
Laravel - 일대다 관계  (0) 2021.04.23
Laravel - @include  (0) 2021.04.14
Laravel - 컨트롤러 줄이기  (2) 2021.04.14

댓글