나중에 진행할 프로젝트에 쓸 기능으로 메일을 통해 인증번호를 전송하는 api를 작성했습니다.
이렇게 쓰일지는 모르겠지만 ... 혹시나 필요한 사람이 있을지 몰라 글을 씁니다.
인증번호 발급을 제외한 메일 발송에 대한 부분만 올리겠습니다.
0. 구글 앱 비밀번호 발급
구글 계정의 보안페이지로 이동한뒤 앱비밀번호를 설정합니다. 2단계 인증을 사용해야 앱 비밀번호를 설정할 수 있습니다.
저는 맥을 사용하여 앱 비밀번호를 생성할 앱 및 기기를 메일, Mac으로 선택했습니다.
1. env 작성
MAIL_MAILER=smtp
MAIL_HOST=smtp.googlemail.com
MAIL_PORT=465
MAIL_USERNAME=your_mail@gmail.com
MAIL_PASSWORD=your_google_app_password
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=from mail address
MAIL_FROM_NAME="${APP_NAME}"
MAIL_PASSWORD 는 발급받은 구글 앱 비밀번호를 입력하면 됩니다!.
2. laravel\app\config\mail.php 수정
'mailers' => [
'smtp' => [
'transport' => env('MAIL_MAILER'),
'host' => env('MAIL_HOST'),
'port' => env('MAIL_PORT'),
'encryption' => env('MAIL_ENCRYPTION'),
'username' => env('MAIL_USERNAME'),
'password' => env('MAIL_PASSWORD'),
'timeout' =>null,
'auth_mode' =>null,
],
...
],
정확한 메커니즘은 모르겠지만 메일을 보내는데 꽤 시간이 걸리더군요. timeout을 설정할 경우 설정한 시간보다 전송시간이 오래걸리면 메일이 전송은 전송되지만 타임아웃 에러를 발생시켜 timeout을 null로 설정했습니다.
3. controller 작성
classEmailSendControllerextendsController
{
public static function sendEmail($emailToken){
$user = [
'email' => $emailToken->send_email
];
$data = [
'token' => $emailToken->email_token
];
Mail::send('email.certification_form', $data,function($message)use($user){
$message->from(env('MAIL_FROM_ADDRESS'), env('MAIL_FROM_NAME'));
$message->to($user['email'])->subject('메일 제목');
});
return'success';
}
}
인증번호를 발급한 뒤 호출되기때문에 인증번호만 파라미터로 받았습니다.
4. blade 작성
<!DOCTYPEhtml>
<htmllang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
</head>
<body>
<divstyle="padding: 40px; width: 100%; box-sizing: border-box">
<divstyle="margin-bottom: 50px;">
<pstyle="font-size: 30px">{{$token}}</p>
</div>
</div>
</body>
</html>
메일을 어떻게 보낼지 태그로 설정 하면 됩니다!
저는 간단하게 인증번호만 보냈습니다.
5. 결과
메일이 정상적으로 발송되는것을 확인할 수 있습니다!
감사합니다!
laravel 프로젝트 iamport 결제, 환불 연동하기 (0) | 2021.11.18 |
---|---|
laravel timestamp UTC형식 변경 (0) | 2021.11.12 |
댓글 영역