웹마스터 팁
게시판 글작성 선택적 메일보내기 - 확장변수 이용
2009.10.28 09:54
게시판 설정에 보면은
관리자 메일이라고 있습니다
해당 글이 관리자에게 발송되는 기능이죠
그런데 이게 음.... 한번 설정해 두면 누가 받고 있는지 모르고....
그리고 특정한 사람한테도 또 받게 해두기 싫고 머 그런 생각에서
열심히 수정해서 나름 성공 시킨것을 공유 하려고 합니다
0. 관리자메일 부분에 아무 메일이나 하나 넣어 두세요
1. 등록할 확장변수 2개
- 확장변수 이름이나 순서는 상관 없습니다 하지만 입력항목 이름은 꼬옥 아래와 같이 해주세요(소스 수정 하시면 변경 하셔도 됩니다)
2. /modules/board/board.controller.php 수정
// 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송
if($output->toBool() && $this->module_info->admin_mail) {
....................... 이부분에 소스를 넣어 시면 됩니다
$oMail->setSender($obj->user_name, $obj->email_address);
$target_mail = explode('+
'+
',',$this->module_info->admin_mail);
for($i=0;$i<count($target_mail);$i++) {
$email_address = trim($target_mail[$i]);
if(!$email_address) continue;
$oMail->setReceiptor($email_address, $email_address);
$oMail->send();
}
}
}
3. 입력할 소스
// 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송
if($output->toBool() && $this->module_info->admin_mail) {
$oMail = new Mail();
$oMail->setTitle($obj->title);
//확장변수 이용 메일 발송 시작
$extra_keys = $oDocumentModel->getExtraKeys($obj->module_srl);
/**
** 확장변수를 이용한 선택적 메일발송
** 0. 관리자 메일 1건 이상의 메일 기재
** 1. 확장변수 이름이 <메일발송-수신> 인 항목을 발송함
** 2. 다중선택 방식으로 기재함(수신인을 선택하며 소스단에서 변경하여 메일 발송)
** - 다중선택시 문자열 구분을 < |@| > 하므로 < , > 변경함
** 3. 변경된 수신인을 $this->module_info->admin_mail 항목으로 변경(메일이 발송되게 됨!!)
**/
if(count($extra_keys)) {
foreach($extra_keys as $idx => $extra_item) {
if($extra_keys[$idx]->name == '메일발송-수신') $value1 = trim($obj->{'extra_vars'.$idx});
if($extra_keys[$idx]->name == '메일발송-참조') $value2 = trim($obj->{'+
'extra_vars'.$idx});
}
}
/**
** 해당문자열을 < |@| > 을 < , > 변경
**/
$value1 = str_replace("|@|",",",$value1);
$value2 = str_replace("|@|",",",$value2);
$value_1 = str_replace("홍길동1","aaaa@aaa.net",$value1);
$value_1 = str_replace("홍길동2","aaaa@aaa.net",$value_1);
$value_2 = str_replace("홍길동1","aaaa@aaa.net",$value2);
$value_2 = str_replace("홍길동2","aaaa@aaa.net",$value_2);
$content_plus = "받는 사람 : ".$value1."<br />참조 : ".$value2."<br />--------------------------------------------------------------------------------------------------------------------<br />";
$t_content = $obj->content;
$obj->content = $content_plus;
$obj->content .= $t_content;
$this->module_info->admin_mail = $value_1.",".$value_2;
//모든 게시판
$oMail->setContent( sprintf("<a href=\"%s\"><a href=\"%s\"><img src='http://creamhouse.wo.tc/xe/files/go.gif'></a></a><br/>\r\n<div style='font-size: 12px; padding-left: 15px;'>%s</div>", getFullUrl('','document_srl',$obj->document_srl), getFullUrl('','document_srl',$obj->document_srl), $obj->content));
//확장변수 이용 메일 발송 끝
$oMail->setSender($obj->user_name, $obj->email_address);
$target_mail = explode(',',$this->module_info->admin_mail);
for($i=0;$i<count($target_mail);$i++) {
$email_address = trim($target_mail[$i]);
if(!$email_address) continue;
$oMail->setReceiptor($email_address, $email_address);
$oMail->send();
}
}
}
대략 이런겁니다 (설명이 안되어서 ㅡ.ㅢ;ㅣㅣ)
특정 확장변수를 체크해서 그 확장변수가 있으면
그 확장변수의 내용에 있는 이름들을 가져와서
미리 지정된 이름이랑 매칭해서 메일을 보내게 됩니다 ㅡㅡa
음 쉽게 설명 하려고 했는데 ㅡ.ㅡ;; 잘 됐나 모르겠네요...
그럼 (__)
전 이제 메일 쓰면 파일까지 자동으로 나타나게 하는거 연구 하려고 하는데
미리 구현 하신분 게시면 도움을
댓글 2
-
주하니
2010.11.14 10:57
-
noirzo
2011.11.07 10:33
문의 주셨던 부분 메일을 추가적으로 소스에 기입하는 부분입니다.
$value_1 = str_replace("수신이름1","1@creamhouse.net",$value1);
$value_1 = str_replace("수신이름2","2@creamhouse.net",$value_1);
$value_1 = str_replace("수신이름3","3@creamhouse.net",$value_1);
$value_1 = str_replace("수신이름4","4@creamhouse.net",$value_1);
$value_1 = str_replace("수신이름5","5@creamhouse.net",$value_1);
$value_2 = str_replace("참조이름1","1@creamhouse.net",$value2);
$value_2 = str_replace("참조이름2","2@creamhouse.net",$value_2);
$value_2 = str_replace("참조이름3","3@creamhouse.net",$value_2);
$value_2 = str_replace("참조이름4","4@creamhouse.net",$value_2);
$value_2 = str_replace("참조이름5","5@creamhouse.net",$value_2);
음...대단히 좋은기능인것 같긴 한데 정확히 어떤기능인지 이해가 잘 안간다는 ㅡㅡㅋ
줘도 못먹는 설움 ㅠ.ㅜ