[새글 알림 모듈] 이메일로 받는 새글 알림에서 제목을 각 게시판 별로 다르게 하고 싶은 경우
먼저 이 게시글은 아래의 모듈을 사용하고 있으며, 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에 하기와 같이 코드를 추가 합니다.
<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 코드를 추가 합니다.
똑같은 코드를 /modules/newposts/queries/insertConfig.xml 에도 추가 합니다.
그런 다음 modules/newposts/newposts.controller.php 파일의 151번 라인으로 이동하면
if (in_array($config->sending_method,array('1','3'))) 코드를 보시게 됩니다.
해당 if문을 아래로 교체 합니다.
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을 아래와 같이 수정 합니다.
그 다음 데이터 베이스 항목에 아래와 같이 mail_title을 추가 해주면 됩니다.
어때요? 참 쉽죠?
별것 아니지만, 그래도 게시판 별로 다른 제목과 내용으로 이메일을 보내고 싶은 욕구는 있었을 것 같습니다.
고급메일 발송을 통해 메일을 보내고, Newpost같은 메일로 새글 메일을 보낼 때 유용할 것 같습니다.
댓글 0