Webhook Email (ghost)
Ghost는 bulk 메일 전송 기능으로 mailgun 업체에 dedicated 되어 있습니다. 수년 전 까지는 mailgun에서 제한된 범위 이지만 대량 메일 발송을 무료로 제공하여 무난하게 쓰기에 좋았죠? 이제 얼마 안되지만 유료로 전환 후 자체 구축한 Ghost 운영자들이 무척 난감했을 것입니다. 더 싼 제공 업체를 찾거나 자체로 해결 하거나 혹은 Ghost 내부 소스를 고치기 까지 했습니다.
이 글은 작은 규모로 운영하거나 개인적으로 운영하는 블로거에게 참고가 되길 원하는 글이며 가입 시 사용하는 mail 설정을 사용 하는 것입니다. 진정 구독자 수가 많아서 대규모 메일 전송을 원하면 mailgun 또는 bulk 메일 전송 업체 및 Webhook 제공 업체를 사용 하는 것이 돈, 시간 및 노력이라는 비용을 덜 수 있을 것으로 생각 합니다.
글의 요지는 이렇습니다. "Ghost는 Custom Integrations 기능을 제공하고 있고 이 기능을 이용하면 가입 시 사용한 메일 설정 정보를 사용하여 구독자 들에게 메일 배포가 가능합니다" 입니다.
Custom Integrations 설정 방법입니다.
- Admin -> Settings -> Integrations 으로 가서 + Add custom integration 버튼을 누룹니다.
2. New Custom Integration 이름을 넣습니다. 아래와 같이 생성이 될 것입니다.

3. 아래에서 +Add webhook을 누루고 이름기입, 동작할 Event 선택, 수행할 Target URL을 넣으면 됩니다. 아래는 새로운 post를 publish 했을 때 webhook이 Target URL에 알린다는 내용입니다.

4. 이제 Target URL을 작성 하면 되는데 이 부분이 간단 하게 설정 같은 것으로 하는 게 아니고 원하는 로직 대로 페이지 개발? 하면 되겠습니다. Ghost가 NodeJS로 개발 되어 있고 Webhook이 던져 주는 Json data 와 NodeJS의 모듈을 이용한다면 원하는 목적을 달성 하게 되겠습니다.
이런 방식을 생각 해보면 새로운 post publish event시 뿐만 아니라 다른 event 시에도 원하는 동작을 추가 할 수 있다는 게 되겠습니다.
저의 경우에는 NodeJS의 Mysql 모듈과 Mailer 모듈을 참조하여 사용 하였습니다. Post publish Event 발생 시 대상 post 정보와 구독자 정보를 가지고 Mailer를 모듈을 사용하여 구독자 들에게 mail 발송을 하였습니다. Html Template도 Ghost가 개발한 NodeJS 모듈을 잘 이용하면 될 듯 한데 이 부분은 타 블로거의 Template를 참조 하여 변경 제작하여 사용 하였습니다. NodeJS 뿐만 아니라 Html에 익숙하지 않아서 저의 경우에는 많은 에너지를 소비 했습니다.
아래는 본 포스팅의 결과 물인 구독자의 메일 수신 내용입니다.

구독자가 많아 지면 bulk 메일 전송 업체나 mailgun 사용을 고려 해 봐야겠죠? 가격 경쟁력으로 AWS SES 도 있다고 합니다. 우리가 알고 있고 쓰고 있는 SMTP 서버 업체들 에서는 대량 발송에 제한을 두고 있고 스팸 처리 등 막는 기능이 있어서 구독자 수가 많아 지면 이 글에서 안내한 방법은 사용 할 수 없을 것입니다.
소규모 또는 개인 블로그 운영자를 위한 Ghost Webhook 기반 SMTP Mail 설정을 사용하여 내 블로구그 구독자 들에게 배포 하는 방법에 대한 참고였습니다.