일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Vue.js
- AWS
- nginx
- 구글 API
- Prometheus
- Vue
- pip
- alb
- 파이썬
- python
- Passport
- 해시키
- https
- MYSQL
- Cordova
- flutter
- window
- SSH
- selenium
- OAuth
- php
- 안드로이드
- Laravel
- mac
- FCM
- ubuntu
- PostgreSQL
- MacOS
- node
- Android
- Today
- Total
print( sjw.iq == 200) output : true
[Laravel] Laravel에서 AWS SES를 이용한 Mail 전송하기 본문
MAIL_DRIVER=ses
안녕하세요! Laravel에서 AWS SES 를 이용하여 Mail 전송하기를 포스팅해보려고 합니다!
AWS SES 셋팅을 먼저 해주시길 바랄게요!
어렵지 않습니다!
참고: https://sjwiq200.tistory.com/49
우선 아마존 SES 드라이버를 사용하려면 먼저 반드시 아마존 AWS SDK for PHP 를 설치해야 합니다!
composer.json 파일 require에 aws-sdk-php 를 작성하여 주시고 composer update를 해줍시다!
"aws/aws-sdk-php": "~3.0"
그리고 나서 .env에 MAIL_DRIVER를 수정해줍시다
기본은 smtp로 되어있을거에요!
다음과 같이 수정해줍시다!
MAIL_DRIVER=ses
그리고 AWS IAM 키를 생성해야 하는데요!
이 부분은 나중에 포스팅해야 할 거 같아요 ㅠㅠ 다른곳에서 찾으시면 금방 찾으실 수 있을거에요!
IAM 키를 생성하게 되면 ACCESS_KEY와 SECRET__KEY를 얻을 수 있습니다!
.env에 다음과 같이 설정해주세요!
AWS_ACCESS_KEY_ID=ㅇㅅㅇ
AWS_SECRET_ACCESS_KEY=ㅇㅅㅇ
AWS_SES_REGION=ap-southeast-2
MAIL_FROM_ADDRESS=sjwiq200@zzieut.com
MAIL_FROM_NAME=sjwiq200
그리고 /config/services.php 파일에 한번 가봅시다!
ses에 대해 작성된 부분이 있는데요!
env의 name 값과 일치하는지 확인해 줍시다~!
'ses' => [
'key' => env('AWS_ACCESS_KEY_ID'),
'secret' => env('AWS_SECRET_ACCESS_KEY'),
'region' => env('AWS_SES_REGION', 'us-east-1'),
],
그리고 /app 밑에 Mails라는 디렉토리를 생성해주시구
AmazonSes.php 라는 파일을 만들어 주실게요!
해당 파일은 다음과 같이 작성하시면 됩니다.
아까 작성한 env에서 보내는 사람 주소를 설정해주면 됩니다!
보내는 사람이 계속 바뀌면 바꾸어 주면 되겠습니당.
# 메일 전송시 view가 필요하던데 정확한 이유는 다음에 다시 포스팅 하도록 할게요..! 저의 view에는 그냥 body에 $email_content['content'] 하나만 출력되어 있습니다.
<?php
namespace App\Mails;
use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class AmazonSes extends Mailable {
use Queueable, SerializesModels;
public $email_content;
public function __construct($email_content) {
$this->email_content = $email_content;
}
public function build() {
return $this->from(env('MAIL_FROM_ADDRESS'))->subject($this->email_content['subject'])->view('emails.mail');
}
}
그리고 해당 Mailable를 확장한 클래스를 호출하는 제 컨트롤러 소스를 봐보겠습니다.
<?php
namespace App\Http\Controllers;
use App\Library\ReturnCode;
use App\Mails\AmazonSes;
use App\ThemeBackFunctions;
use App\ThemeBorders;
use App\ThemeColors;
use App\ThemeFontOptions;
use App\ThemeFrontFunctions;
use App\Themes;
use Illuminate\Http\Request;
use Illuminate\Routing\Controller as BaseController;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\View;
class MailController extends BaseController
{
public function test () {
// single email
$data = array(
'target_email' => array(
array(
'name' => '네이버잡스',
'email' => 'sjwiq200@naver.com'
)
),
'subject' => '재우 짱짱맨',
'content' => '안녕하세요 <a href="https://~~zzieut.pdf" >pdf 다운로드 </a>'
);
// multi email
/*$data = array(
'target_email' => array(
array(
'name' => '네이버잡스',
'email' => 'sjwiq200@naver.com'
),
array(
'name' => '지메일잡스',
'email' => 'sjwiq200@gmail.com'
)
),
'subject' => '재우 짱짱맨',
'content' => '안녕하세요'
);*/
return $this->sendMail($data);
}
/**
* @param $options
* $options['target_email']
* $options['subject']
* $options['content']
* @return string
*/
public function sendMail($options) {
Mail::to($options['target_email'])->send(new AmazonSes(array(
'subject' => $options['subject'],
'content' => $options['content']
)));
return 'Done!';
}
}
하나의 이메일을 보낼 떄와 여러 개의 이메일을 보내는 예제 코드 입니당.
보시는 바와 같이 정말 간단하죠? ㅎㅎㅎ
그리고 html 태그를 작성하실 수도 있습니다!
감사합니다.
'PHP' 카테고리의 다른 글
[Laravel] Passport 사용하기 (oauth2.0, REST API) (0) | 2020.02.11 |
---|---|
[Laravel] laravelcollective/html https 적용하기 (0) | 2020.02.04 |
[Laravel] Storage 권한 관련 문제 (0) | 2020.01.16 |
[Laravel] Excel 파일 관리하기 (0) | 2019.10.31 |
[PHP] Ubuntu18.04에 php, apache, laravel 설치 및 설정 (0) | 2019.08.01 |