문의 폼을 달았는데 메일이 안 옵니다 — 서버가 메일을 못 보내는 경우

문의 폼을 다는 일은 보통 10분이면 끝납니다. 플러그인을 켜고, 폼을 만들고, 글에 넣으면 됩니다. 저희도 그렇게 끝날 줄 알았습니다.

그런데 폼은 「감사합니다」를 보여주는데 메일이 오지 않았습니다. 스팸함에도 없었습니다.

원인은 폼이 아니었습니다. 서버가 메일을 보낼 수 없는 상태였습니다. 이 글은 그 확인 방법과 해결책입니다. 그리고 메일이 아직 안 나가는 동안에도 문의를 잃지 않는 법을 같이 적습니다. 이게 실무에서는 더 급합니다.

먼저 — 폼 문제인지 서버 문제인지 가르기

문의 폼 제출 후 화면 메시지로 원인을 가르는 그림 — 「필수 항목」이면 폼 설정, 「전송에 실패했습니다」면 서버 또는 메일 설정, 「감사합니다」인데 메일이 없으면 서버가 메일을 못 보내는 경우

둘은 증상이 비슷한데 고치는 곳이 완전히 다릅니다. 30초면 가릅니다.

폼을 제출한 뒤 화면에 뜨는 메시지를 보십시오.

화면에 뜬 것 어디가 문제인가
빨간 테두리 + 「필수 항목」류 폼 설정. 서버까지 가지도 않았습니다
「메시지 전송에 실패했습니다」 서버 또는 메일 설정. 이 글의 내용입니다
「감사합니다」인데 메일이 안 옴 서버가 메일을 못 보냄. 가장 헷갈리는 경우입니다

세 번째가 저희 경우였습니다. 폼 입장에서는 「접수했고 메일 보내라고 넘겼다」까지가 자기 일이라, 성공 화면이 뜹니다. 그래서 폼만 계속 들여다보게 됩니다.

왜 서버가 메일을 못 보내나

워드프레스는 메일을 보낼 때 서버에 메일 보내는 프로그램이 깔려 있다고 가정합니다. 일반적인 웹호스팅에는 대개 있습니다.

없는 경우가 있습니다.

  • 컨테이너로 돌리는 환경 — 요즘 클라우드 배포 방식입니다. 이미지가 가볍게 만들어져 있어서 메일 프로그램이 빠져 있는 경우가 많습니다. 저희가 이 경우였습니다
  • 발송 포트가 막힌 경우 — 스팸 방지로 막아 두는 곳이 있습니다
  • 보안 정책으로 막은 경우

여기서 중요한 점 하나. 이건 플러그인을 바꿔도 해결되지 않습니다. 어떤 폼 플러그인을 쓰든 결국 워드프레스의 같은 메일 기능을 씁니다. 그 아래가 막혀 있으면 다 똑같이 실패합니다. 플러그인을 세 개쯤 갈아 끼우다 시간을 버리기 쉬운 지점입니다.

확인하는 법

워드프레스 관리자에서 도구 → 사이트 상태 → 정보 를 여시면 서버 정보가 나옵니다. 여기서 메일 관련 항목을 볼 수 있습니다.

더 확실한 방법은 테스트 메일을 보내 보는 것입니다. 뒤에 나오는 SMTP 플러그인에는 대부분 테스트 발송 기능이 있습니다. 그 결과 메시지가 원인을 바로 알려줍니다.

해결 — 바깥 메일 서버를 빌려 씁니다

서버가 직접 못 보내면, 이미 메일을 잘 보내는 곳을 거쳐서 보내면 됩니다. 이것을 SMTP 설정이라고 합니다.

방법은 세 가지입니다.

무엇 언제 쓰나
1 Gmail(구글 계정)을 거쳐 보내기 발송량이 적을 때. 가장 빠릅니다
2 메일 발송 전문 서비스 발송량이 많거나 도달률이 중요할 때
3 쓰고 있는 메일 호스팅의 SMTP 회사 도메인 메일을 이미 쓰고 있을 때

작은 사이트라면 1번이 가장 빠릅니다. 준비물은 앱 비밀번호 하나입니다.

Gmail로 보내려면 — 앱 비밀번호가 필요합니다

여기서 한 번 더 막히는 분이 많아서 따로 적습니다. 구글 계정 비밀번호를 그대로 넣으면 안 됩니다. 구글이 막습니다.

대신 앱 비밀번호라는 것을 따로 발급받아야 합니다. 조건이 하나 있습니다 — 2단계 인증이 켜져 있어야 앱 비밀번호 메뉴가 나타납니다. 2단계 인증이 꺼져 있으면 메뉴 자체가 안 보이고, 「메뉴가 없는데요」로 한참 헤매게 됩니다.

순서는 이렇습니다.

  1. 구글 계정 → 보안 → 2단계 인증을 켭니다
  2. 같은 화면에서 앱 비밀번호를 찾아 새로 만듭니다
  3. 16자리 문자열이 나옵니다. 이 화면을 닫으면 다시 못 봅니다. 바로 복사하십시오
  4. 워드프레스의 SMTP 플러그인에 그 값을 넣습니다

플러그인 설정에 넣는 값

대부분의 SMTP 플러그인이 같은 항목을 묻습니다.

  • 호스트 — 쓰는 메일 서비스의 발송 서버 주소
  • 포트와 암호화 — 보통 465(SSL) 또는 587(TLS) 중 하나입니다. 서비스 안내 문서에 어느 쪽인지 적혀 있습니다
  • 아이디 — 보내는 메일 주소
  • 비밀번호 — 앞에서 만든 앱 비밀번호
  • 보내는 사람 주소 — 실제로 존재하는 주소를 쓰십시오. 없는 주소로 보내면 받는 쪽에서 스팸으로 분류될 확률이 올라갑니다

넣고 나서 반드시 테스트 발송을 해 보십시오. 설정을 저장했다고 되는 게 아닙니다.

그런데 — 메일이 되기 전에 할 일이 있습니다

여기가 이 글에서 가장 실용적인 부분입니다.

앱 비밀번호를 발급받는 데는 계정 주인의 손이 필요합니다. 담당자가 자리에 없으면 며칠 걸리기도 합니다. 그동안 들어온 문의는 어디로 갑니까.

그냥 두면 사라집니다. 메일 발송이 실패하면 워드프레스는 대개 그 내용을 어디에도 남기지 않습니다. 폼은 「감사합니다」를 띄웠으니 보낸 사람은 답을 기다리고 있습니다. 이게 가장 나쁜 상태입니다.

그래서 순서를 이렇게 잡으시면 됩니다.

1단계 — 사이트 안에 저장부터 켜십시오. 폼 제출 내용을 데이터베이스에 남기는 플러그인이 있습니다. 대표적인 것이 Contact Form 7과 같이 쓰는 Flamingo입니다. 설치하고 켜기만 하면 되고 설정할 것이 없습니다. 이걸 켜 두면 메일이 실패해도 관리자 화면에서 문의 내용을 볼 수 있습니다.

2단계 — 그다음에 메일을 고치십시오. 저장이 켜져 있으면 급하지 않습니다.

저희는 순서를 이렇게 했습니다. 저장을 먼저 켜고, 메일은 앱 비밀번호가 준비된 뒤에 붙였습니다. 그 사이에 들어온 문의는 하나도 잃지 않았습니다.

저장만 켜 두면 놓치지 않나

놓칠 수 있습니다. 매일 관리자 화면을 보지는 않으니까요. 그래서 중간 단계로 쓸 수 있는 것이 하나 더 있습니다 — 다른 경로로 알림을 받는 것입니다.

저희는 구글 폼으로 들어온 문의를 알림으로 받는 방법과 구글 스프레드시트 자동 알림을 만들어 본 적이 있습니다. 같은 발상을 여기에도 쓸 수 있습니다. 메일 말고 다른 경로 하나를 열어 두는 것입니다. 메일이 막혀 있어도 알림은 옵니다.

정리 — 순서만 지키면 됩니다

  1. 증상을 가르십시오. 「감사합니다」가 뜨는데 메일만 안 오면 폼이 아니라 서버 문제입니다. 플러그인을 갈아 끼우지 마십시오
  2. 저장부터 켜십시오. 메일을 고치는 동안 문의를 잃지 않습니다. 설정할 것도 없습니다
  3. SMTP를 붙이십시오. Gmail로 할 거면 2단계 인증 → 앱 비밀번호 순서입니다. 계정 비밀번호는 안 됩니다
  4. 테스트 발송으로 확인하십시오. 저장했다고 되는 게 아닙니다

가장 흔한 실수는 1번과 2번을 건너뛰고 플러그인만 바꿔 보는 것입니다. 원인이 서버에 있으면 어떤 플러그인을 써도 결과가 같습니다.


문의 폼을 붙이는 것 자체가 처음이시면, 순서를 뒤집어 보시는 것도 방법입니다. 먼저 저장만 되는 폼을 올려 두고, 문의가 실제로 들어오는지 본 다음에 메일을 붙이는 것입니다. 안 들어오면 메일 설정에 시간을 쓸 이유가 없습니다.

막히는 부분이 있으면 문의로 알려 주십시오. 어느 단계에서 막히신 건지 정도는 같이 짚어 드릴 수 있습니다.

Leave a Comment