내가 자꾸 까먹어서 쓰는 개발 이야기/Laravel
Laravel에서 gmail로 html 메일 보내기 (2019.5.10 내용추가)
FIL.
2018. 1. 2. 18:26
728x90
삽질하다 다음번엔 하기 싫어서 남김.
일단 .evn 파일을 열어 메일 계정을 셋팅한다.
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=<your@email.address>
MAIL_PASSWORD=<your_password>
MAIL_ENCRYPTION=tls
셋팅을 마치면 메일을 보낼 메서드에 아래와 같이 작성한다.
\Mail::send([], $data, function ($message) {
$message->to("to@e.mail", "to_name")
->from("from@e.mail", "from_name)
->subject("message_title")
->setBody("message body bla bla bla", "text/html;charset=utf-8");
});
이것이 기본 형태이다.
param 1 에 view 대신 빈 배열을 넣어 통과시켰다. (구글이 알랴줌)
그러나 우리는 고정 형태의 메일을 고정 수신자에게 보내지는 않을것이다.
만약 그럴거라면 당장 뒤로가기를 눌러라. 대체 이걸 왜 읽고있나?
어딘가의 DB에서 가져온 row를 array로 변경했고, 이걸 $data 라고 가정한다.
\Mail::send([], $data, function ($message) use ($data) {
$message->to($data["to_name"], $data["to_name"])
->from($data["from_email"], $data["from_name"])
->subject($data["title"])
->setBody($data["body"], "text/html;charset=utf-8");
});
위와 같이 "use" 키워드를 사용하여 callback 함수에서 데이터를 사용할 수 있게 해주면 된다.
그럼 ㅂㅂ
================================== 2019.05.10 내용 추가 ====================================
message body에 아래 내용을 추가 해 주어야 메일 폼이 깨지지 않는다.
$message .= 'Content-Transfer-Encoding: 8bit' . "\r\n\r\n";