먼저 이 게시글은 아래의 모듈을 사용하고 있으며, php버전에 맞는 오류 수정은 각 사용자가 직접 하여야 합니다.
https://xe1.xpressengine.com/index.php?mid=download&package_id=20393822
기존의 새글 알림 모듈은 게시글의 제목을 메일의 제목으로 사용하게 되었습니다.
때로는 별도의 메일 제목으로 고정하여 보내고 싶을때 소스를 직접 수정하여, 제목을 고정하게 되는데요..
이렇게 되면, 각 게시판 별로 제목을 달리하여 보내거나, 이를 바꾸고 싶을때 난관에 부딛히곤 합니다.
이 팁에서는
1. 게시판 별 발송할 메일의 제목을 설정합니다.
2. 만약 별도로 설정할 제목이 없다면, 게시글의 제목으로 발송할 수 있도록 합니다.
1. 먼저 게시판 설정의 제목을 설정하기 위하여
modules/newposts/tpl/modify.html과 modules/newposts/tpl/insert.html에 하기와 같이 코드를 추가 합니다.
<div class="x_control-group"> <label class="x_control-label">이메일 제목</label> <div class="x_controls"> <input type="text" name="mail_title" style="width: 250px;" value="{$config->mail_title}" /> </div> </div>
코드 위치는 각자 알아보기 편하도록 추가 하시면 됩니다.
저는 관리자 이메일 주소 하단에 추가 했습니다.
이 다음은 DB에도 저장 해야하니 modules/newposts/schemas/newposts_config.xml 파일에 sender_email 줄 아래에 아래의 XML 코드를 추가 합니다.
<column name="mail_title" type="bigtext" notnull="notnull" />
똑같은 코드를 /modules/newposts/queries/insertConfig.xml 에도 추가 합니다.
그런 다음 modules/newposts/newposts.controller.php 파일의 151번 라인으로 이동하면
if (in_array($config->sending_method,array('1','3'))) 코드를 보시게 됩니다.
해당 if문을 아래로 교체 합니다.
if (in_array($config->sending_method, ['1', '3'])) { if ($config->sender_email) { $sender_email_address = $config->sender_email; } else { $sender_email_address = $sender->email_address; } if ($config->sender_name) { $sender_name = $config->sender_name; } else { $sender_name = $sender->nick_name; } if ($config->mail_title) { //만약 제목이 설정되어 있다면 $m_title = $config->mail_title; } else { //만약 제목이 없다면 $m_title = $obj->title; } //새로운 게시글을 작성 후 사전에 저장된 제목 또는 게시글 제목으로 이메일을 발송한다 $oMail = new Mail(); $oMail->setTitle($m_title); $oMail->setContent($mail_content); $oMail->setSender($sender_name, $sender_email_address); //분류별 관리자 E-mail $target_email = explode(',', $output->data->email); foreach ($target_email as $email_address) { $email_address = trim($email_address); if (!$email_address) { continue; } $oMail->setReceiptor($email_address, $email_address); $oMail->send(); } //전체관리자 E-mail $target_email = explode(',', $config->admin_emails); foreach ($target_email as $email_address) { $email_address = trim($email_address); if (!$email_address) { continue; } $oMail->setReceiptor($email_address, $email_address); $oMail->send(); } }
변경된 내용은 모듈 설정에 mail_title이 있으면 설정된 메일 제목으로, 없는 경우 게시글 제목으로 발송한다는 코드입니다.
그 다음은 설정 페이지에서 입력한 값을 무사히 DB에 입력할 수 있도록
modules/newposts/newposts.admin.controller.php 43번 라인에 mail_title을 아래와 같이 수정 합니다.
$params = Context::gets('admin_phones','admin_emails','sender_phone','sender_name','sender_email','content','mail_title','mail_content','module_srls','msgtype','sending_method', 'sms_method', 'time_switch', 'time_start', 'time_end', 'reserv_switch', 'selected_days', 'sender_key', 'template_code');
그 다음 데이터 베이스 항목에 아래와 같이 mail_title을 추가 해주면 됩니다.
어때요? 참 쉽죠?
별것 아니지만, 그래도 게시판 별로 다른 제목과 내용으로 이메일을 보내고 싶은 욕구는 있었을 것 같습니다.
고급메일 발송을 통해 메일을 보내고, Newpost같은 메일로 새글 메일을 보낼 때 유용할 것 같습니다.