Laravel 의 메일
https://laravel.com/docs/8.x/mail#introduction
Laravel 은 인기있는 SwiftMailer 라이브러리 기반으로 깨끗하고 간단한 이메일 API를 제공하기 때문에 복잡하지 않게 이메일을 보낼 수 있다. Laravel 과 SwiftMailer는 SMTP, Mailgun, Postmark, Amazon SES 및 sendmail을 통해 이메일을 전송하기 위한 드라이버를 제공하므로 자신이 선택한 로컬 또는 클라우드 기반 서비스를 통해 메일 전송을 빠르게 시작할 수 있습니다.
메일 보내기
1. 환경변수파일 .env 수정
MAIL_MAILER=smtp
MAIL_HOST={호스트}
MAIL_PORT={포트}
MAIL_USERNAME={계정}
MAIL_PASSWORD={비밀번호}
여기에 먼저 자신이 사용하고자 하는 메일 정보에 맞게 기입합니다.
2. 메일링 생성
> php artisan make:mail Common
터미널에서 위 명령을 실행하면 app\Mail 디렉토리가 생성되며 Mailable 클래스를 확장한 Common 클래스 파일이 생성됩니다.
<?php
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class Common extends Mailable
{
use Queueable, SerializesModels;
public $content;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct($message)
{
//
$this->content = $message['content'];
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('보내는메일', '보내는사람')
->view('mail')->with([
'content' => $this->content,
]);
}
}
메일 내용에 들어갈 $content 변수를 선언하고 위 클래스 호출시 $content 변수에 값을 넣도록 생성자에 파라미터를 받아 설정했습니다. 이제 build 함수에 보내는 메일 정보를 설정하고 content 를 view 햠수에 실었고 mail.blade.php 뷰 파일을 생성해 view 함수에 기입했습니다.
3. mail.blade.php 뷰 파일 생성
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>{{ env('APP_NAME') }}</title>
</head>
<body>
{{ $content }}
</body>
생성한 뷰 파일 내에 위와 같이 작성해 $content 값을 출력할 수 있도록 했습니다.
4. MailContoller.php
use App\Mail\Common;
use Illuminate\Support\Facades\Mail; // Mail 파사드 추가
이제 메일을 발송하는 컨트롤러 생성해 Mail 파사드와 추가하고나면
아래와 같이 간단한 방법으로 메일을 보내는 것이 가능합니다.
Mail::to('받는메일')
->send(new Common(['content' => '라라벨 메일발송 테스트']));
정리, 어떻게 보면 여기 저기 파일을 만들어 복잡하게도 느껴지지만 각자의 역할이 명확히 나뉘어 실제 메일을 발송하는 부분에서 간편하게 보낼 수도 있고 디버깅에 및 코드 수정에도 용이할 수 있겠다.
'Develop > PHP' 카테고리의 다른 글
Google Cloud API In Laravel(PHP) (0) | 2022.06.30 |
---|---|
PHP 소수점 나머지가 나오지 않는 이유 (0) | 2022.06.20 |
MySQL | The server requested authentication method unknown to the client (0) | 2022.03.27 |
PHP CURL 사용법 (0) | 2020.03.05 |
PHP DB 중복된 키 값 처리 방법 (0) | 2020.03.03 |
댓글