아직 라라벨 뉴비에 불과한 필자에게 라라벨이 제공하는 여러 가지 기능을 따라해보고 이것 저것 테스트하기 위해서는 그 기능을 추가할 수 있는 기반이 되는 아주 기본적인 기능의 라라벨 프로젝트가 필요해졌습니다.  


그래서 지난 포스팅에서는 라라벨이 제공하는 인증기능을 포함해서 구글의 G메일을 이용해 메일을 발송할 수 있는 초간단 프로젝트를 세팅하는 방법에 대해서 소개한 적이 있는데요. 



하지만 실제 테스트를 해보고 메일을 발송하게되는 상황이 자주 발생하다보니 존재하지 않은 이메일로 인해 제법 성가신 문제들이 생기게 되었습니다. 


그런데 라라벨에서 메일을 보낼 때 해당 메일주소로 실제 메일을 보내지는 않지만 실제 메일이 발송되는 것처럼 수신된 내용을 확인해볼 수 있는 mailtrap이라는 메일 서비스가 있더군요. 그래서 이걸 사용해보니 완전 편합니다. mailtrap에 가입하고 발급되는 계정정보를 라라벨 환경설정에 기입해주기만 하면 바로 연동되어 매우 간단하게 메일기능까지 사용해 볼 수 있습니다. 


mailtrap은 pusher처럼 개인 개발자가 테스트 용도로 사용하기에 충분한 무료옵션을 제공합니다. 물론 그 이상 비즈니스를 위해 회사차원에서 실제 서비스에 사용한다면 유료옵션을 가입해야 겠지요. 


그래서 오늘은 기본적인 라라벨 프로젝트를 세팅하고 가입시 등록한 비밀번호를 잊어버렸을 때 mailtrap을 이용해 메일을 송수신하는 부분까지만 진행해보겠습니다. 



먼저 프로젝트를 생성해보죠. 


$ composer create-project laravel/laravel task-app.test --prefer-dist -vvv


composer로 task-app.test라는 프로젝트를 생성합니다. 물론 이 프로젝트에서 사용할 maria 데이터베이스 및 계정은 라라벨 환경설정 파일(.env)에 미리 세팅해놓습니다.

이제 서버를 기동해서 사이트를 띄워봅니다. 


이제 make:auth artisan 명령으로 우리 어플리케이션에 가입, 로그인, 로그아웃 등 기본적인 인증기능을 포함시킵니다. 



$ php artisan make:auth



이제 싸이트를 다시 띄우면 우측 상단에 가입과 로그인 버튼이 추가된 것을 볼 수 있습니다. 


다음으로 migration 명령으로 인증에 필요한 테이블을 생성합니다. 


$ php artisan migrate


여기서는 사용자 정보를 저장하는 테이블(users)과 비밀번호를 잊어버렸을 때 사용되는 테이블(password_resets) 2개를 생성합니다. 이전 포스팅에서 얘기한 것처럼 오류가 나지 않도록 미리 AppServiceProvider 파일을 수정합니다.



migration이 정상적으로 되면 기본적인 인증기능이 작동합니다. 


이제 가입을 하고 로그아웃한 뒤 비밀번호를 잊어버렸을 때 가입당시 등록한 이메일로 메일을 발송하기 위해 mailtrap을 연동합니다. 이를 위해 먼저 mailtrap.io에 가입합니다.


 

그러면 Demo inbox라는 메일함이 생기는데 이 메일함을 클릭하면 메일서버 주소와 포트, 인증정보가 보입니다. 



이 인증정보를 라라벨 환경설정 파일에 저장하면 끝~!



이제 비밀번호 재설정 기능을 이용하면 메일이 발송되었다는 화면이 보입니다. 그리고 실제로 발송된 메일은 mailtrap의 메일함에 수신되어 여기서 확인할 수 있게 됩니다. 



mailtrap의 Demo inbox를 보죠.



메일이 수신된 것을 확인할 수 있습니다. mailtrap 서비스는 이렇게 메일 수신자를 가장함으로써 실제 해당 사용자에게 어떻게 메일이 발송되는지를 확인할 수 있으므로 실제 메일 서버가 없어도 또, 실제 메일 주소를 사용하지 않아도 메일과 관련된 기능을 충분히 테스트할 수 있습니다. 

환경설정 파일에 2개 항목을 추가해서 메일 송신자를 회사나 사이트 관리자 등 사이트를 대표하는 송신자의 정보로 변경할 수도 있습니다. 물론 이것은 라라벨이 제공하는 기능입니다.


MAIL_FROM_ADDRESS=webmaster@task-app.test
MAIL_FROM_NAME="Task App"



Posted by 라스모르
,