PHP로 구현된 Rhymix에서 이메일을 보내는 방법은 다양하다. 추천하지는 않지만 PHP의 mail() 함수도 있고, Woorimail(https://woorimail.com) 같이 정해진 할당량 내에서는 무료인 외부 api를 사용하는 방법도 있다. Rhymix에서는 이를 기본적으로 관리자 화면 시스템 설정에서 제공해주는데, 시스템 설정 → 알림 설정 → 이메일 항목에서 '발송 방법'에서 원하는 이메일 발송 방식을 선택할 수 있다.
이처럼 시스템 설정에서 정한 이메일 발송 방식을 개발 중인 애드온 또는 모듈에서도 사용하고 싶은 경우, 아래 짧은 코드를 사용하면 해결된다.
$oMail = new \Rhymix\Framework\Mail();
$oMail->setSubject($subject); // 발송 이메일 제목 설정
$oMail->setBody($mail_body); // 발송 이메일 본문 내용 설정
$oMail->addTo($recipient, null); // 수신자 설정
$email_send = $oMail->send(); // 발송 및 발송 결과 반환
XE에서는 libs 폴더에 각종 라이브러리를 저장했었는데, Rhymix에서는 common의 하위 폴더인 framework에 정의되어 있다. 정확히는 rhymix/common/framework 폴더 내 mail.php 파일에 클래스로 정의되어 있다.
Rhymix는 주로 커뮤니티 운영에 최적화되어 있어서 외부인이 게시판에 글을 게시하는 기능은 워드프레스와 같은 다른 CMS보다 빈약한 편이다. 그래서 필자처럼 Rhymix를 홍보 목적이나 개인 블로그 운영 목적으로 사용하는 사람들에게는 아쉽다. 현재로서는 외부인이 사이트에 방문해서 게시판에 글을 남길 때 reCAPTCHA 등 간단히 접속자가 봇인지 아닌지를 판단하는 정도로만 인증 절차를 구현할 수 있어서다. 그래서 익명의 외부인이 글을 남기기 전에 이메일 인증 절차를 거쳐서 게시자의 최소한의 개인정보를 제공받을 수 있는 기능이 필요했다. 고등학생 시절 XE를 사용하고 있음에도 불구하고 레이아웃 스킨 html 파일 위에 비회원 익명 이메일 인증 기능을 구현했지만, 관리를 용이하게 하고 Rhymix를 좀 더 공부하고자 별도로 애드온과 모듈로 분리하는 작업을 진행 중이다.
아래 코드는 앞서 설명한 비회원 이메일 인증 애드온에서 위의 이메일 발송 코드를 사용한 예시이다.
$recipient = $_POST[email];
$subject = iconv("UTF-8", "EUC-KR", "메일주소가 확인되었습니다.");
$mail_body = "E-Mail 주소가 확인 되었습니다.<br><a href='" . htmlspecialchars_decode(getUrl('act', 'dispBoardWrite', 'document_srl', '')) . "&auth_key=" . md5($recipient) . "' target='_blank'>여기</a>를 클릭해 주세요."; // 내용
$mail_from = $addon_info->host_mail;
$email_send = false;
if ($addon_info->send_type == "default"){
$oMail = new \Rhymix\Framework\Mail();
$oMail->setSubject($subject);
$oMail->setBody($mail_body);
$oMail->addTo($recipient, null);
$email_send = $oMail->send();
}
앞으로도 별도 서드 파티 애드온이나 모듈에서 이메일을 발송하는 기능을 제작할 때 유용할 것으로 기대된다.