laravel.kr/docs/8.x/mail#generating-mailables
기본적으로 위 문서를 참고해서 만들었습니다.
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
위 명령어로 캐시를 초기화 해주고, 다음으로 서버를 재시작해줍니다.
그렇지 않으면 에러가 발생합니다. 꼭 해주세요.
위 링크로 들어가 보안 수준 낮은 앱 허용을 사용으로 바꿔주세요.
그리고 회원가입 화면에서 회원가입을 진행하고, 이메일 수신함을 확인하면 메일이 온 것을 확인할 수 있습니다.
이메일로 확인 링크를 보내는 방법은 공부하고 추후에 따로 올리도록 하겠습니다.
'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 |
댓글