코스모스팜 회원관리 플러그인을 사용하면, 메일주소를 변경할 때 인증메일이 발송된다.
그런데, 워드프레스에서 기본적으로 발송되는 메일은 [받은 메일함]에 잘 들어오는데, 코스모스팜 플러그인에서 발송되는 메일은 항상 스팸메일로 분류되었다.
게다가 인증메일 내용으로 작성한 글에 줄바꿈이 그대로 반영되지 않아 빈 줄이 없게 표현되어 가독성이 떨어졌다.
인증메일 발송 함수
코스모스팜 플러그인에서 인증메일을 발송하는 함수를 확인해 보았다.
cosmosfarm-members.php > cosmosfarm_members-send_verify_email($user,$verify_code)
메일을 발송하기 전에 메일형식을 ‘text/html’ 로 선언하고, /email/template.php 를 읽어서 여기에 내용을 추가하여 발송하도록 하고 있다.
사용자가 작성한 글은 wpauto 함수로 일반 텍스트를 html 텍스트로 변환하기도 한다.
워드프레스 기본 메일 발송
워드프레스 기본 메일은 아래와 같이 발송된다.
워드프레스에서 기본적으로 발송되는 문장은 그냥 텍스트문으로 처리되고 있는 것 같다.
해결 방법
스팸메일로 분류 되지 않도록
‘text/html’ 을 선언하는 부분을 제거해 보았다. 그랬더니 스팸으로 분류되지 않고 정상적으로 수신이 되었다.
그렇다고, 텍스트 문으로 보내자니 메일에 링크를 넣을 수는 없어서 적당한 해결 방법은 아닌 것 같다.
html 메일을 보내는 것은 포기할 수 없어 다른 방법을 찾기 위해서 template.php 파일을 열어보았다.
메일 보내는 양식에 <style></style> 에 css 정의 문장이 한 가득이다.
거창한 메일을 발송할 것이 아니라서, template.php 는 다른 백업해 두고, <style></style> 내용을 통째로 지워버렸다.
그러고서 테스트 해 보니, 스팸으로 걸러지지 않고 정상적으로 수신이 되었다.
style 서식 중 어느 부분이 왜 스팸 여부를 판단하는데 영향을 미치는 지는 모르겠지만, 일단 이렇게 함으로서 스팸으로 걸러지는 문제는 해결하였다.
메일에서 줄바꿈이 적용되지 않는 문제
남은 문제는 줄바꿈이 제대로 되지 않는 문제….
이것은 아래 문장을
$message = wpauto($args[‘message’]);
이렇게 바꾸어서 해결하였다.
$message = nl2br($args[‘message’]);
그러나,,
일단은 해결이 되는 듯 했으나, 이미지가 들어가면 다시 스팸으로 분류된다…
스팸지수를 점검하는 사이트에서 테스트 해 보니, 이미지만 있고 글자수가 너무 작아도 스팸지수가 올라가는 것을 알게 되었다.
그래서, 메일인증 링크를 보내는 단순한 메일이지만 글자수를 더 늘여보았다.
결국 복잡하게 할 것 없이 글자수를 좀 더 늘이면 되는 문제가 아니었나 싶으다. @@