묻고답하기
댓글이 관리자메일로 오긴하는데, 비회원의 댓글은 안오는 상황 질문
2013.06.24 16:39
/** * @brief 코멘트 추가 **/ function procBoardInsertComment() { // 권한 체크 if(!$this->grant->write_comment) return new Object(-1, 'msg_not_permitted'); $logged_info = Context::get('logged_info'); // 댓글 입력에 필요한 데이터 추출 $obj = Context::gets('document_srl','comment_srl','parent_srl','content','password','nick_name','member_srl','email_address','homepage','is_secret','notify_message'); $obj->module_srl = $this->module_srl; // 원글이 존재하는지 체크 $oDocumentModel = &getModel('document'); $oDocument = $oDocumentModel->getDocument($obj->document_srl); if(!$oDocument->isExists()) return new Object(-1,'msg_not_permitted'); // For anonymous use, remove writer's information and notifying information if($this->module_info->use_anonymous == 'Y') { $obj->notify_message = 'N'; >>>>$obj->notify_message = 'Y';<<<< $this->module_info->admin_mail = ''; >>>>$this->module_info->admin_mail; ---or--- $this->module_info->admin_mail = '메일을 받을 임의의 주소'; <<<< $obj->member_srl = -1*$logged_info->member_srl; $obj->email_address = $obj->homepage = $obj->user_id = ''; >>>> $obj->email_address = '임의의 이메일 주소'; <<<< >>>> $obj->homepage = $obj->user_id = ''; <<<< $obj->user_name = $obj->nick_name = 'anonymous'; $bAnonymous = true; } else { $bAnonymous = false; } // comment 모듈의 model 객체 생성 $oCommentModel = &getModel('comment'); // comment 모듈의 controller 객체 생성 $oCommentController = &getController('comment'); // comment_srl이 존재하는지 체크 // 만일 comment_srl이 n/a라면 getNextSequence()로 값을 얻어온다. if(!$obj->comment_srl) { $obj->comment_srl = getNextSequence(); } else { $comment = $oCommentModel->getComment($obj->comment_srl, $this->grant->manager); } // comment_srl이 없을 경우 신규 입력 if($comment->comment_srl != $obj->comment_srl) { // parent_srl이 있으면 답변으로 if($obj->parent_srl) { $parent_comment = $oCommentModel->getComment($obj->parent_srl); if(!$parent_comment->comment_srl) return new Object(-1, 'msg_invalid_request'); $output = $oCommentController->insertComment($obj, $bAnonymous); // 없으면 신규 } else { $output = $oCommentController->insertComment($obj, $bAnonymous); } // 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송 if($output->toBool() && $this->module_info->admin_mail) { >>>> if($this->module_info->admin_mail) { <<<< --- or --- >>>> if($output->toBool() || $this->module_info->admin_mail) { <<<< $oMail = new Mail(); $oMail->setTitle($oDocument->getTitleText()); $oMail->setContent( sprintf("From : <a href=\"%s#comment_%d\">%s#comment_%d</a><br/>\r\n%s", getFullUrl('','document_srl',$obj->document_srl),$obj->comment_srl, getFullUrl('','document_srl',$obj->document_srl), $obj->comment_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(); } } // comment_srl이 있으면 수정으로 } else { // 다시 권한체크 if(!$comment->isGranted()) return new Object(-1,'msg_not_permitted'); $obj->parent_srl = $comment->parent_srl; $output = $oCommentController->updateComment($obj, $this->grant->manager); $comment_srl = $obj->comment_srl; } if(!$output->toBool()) return $output; $this->setMessage('success_registed'); $this->add('mid', Context::get('mid')); $this->add('document_srl', $obj->document_srl); $this->add('comment_srl', $obj->comment_srl); }
xe 1.4 버전이라서 송동우님이 올리신 팁이 맞지가 않더라구요
댓글을 메일로 보내는 처리를 하는 곳이 modules/board/board.controller.php 임을 확인하였고
위 코드에서 빨간 글씨가 제가 수정 해본 것이지만(코드 하이라이터 안에서는 글씨색이 적용이 안되는군요),
'>>>>' , '<<<<' 로 표시한 곳 입니다.
비회원 댓글은 메일로 오지 않는 상황입니다.
--- or --- 는 앞 뒤,(혹은 위 아래)의 코드 모두 적용을 해봤다는 뜻입니다.
회원의 메일은 잘 오고 있는 상황이므로,
// 문제가 없고 모듈 설정에 관리자 메일이 등록되어 있으면 메일 발송
if($output->toBool() && $this->module_info->admin_mail) {
부터 보니, output이 false 날 일은 아마 없을 듯 하고 $this 가 false일 것 같아서 위에서 보니,
// For anonymous use, remove writer's information and notifying information
if($this->module_info->use_anonymous == 'Y') {
$obj->notify_message = 'N';
$this->module_info->admin_mail = ''; <--- 이곳에서 this에 빈 문자열을 넣어주는 것을 확인했습니다. if 구문도 비회원일 때를 뜻하는 것 같구요
$obj->member_srl = -1*$logged_info->member_srl;
$obj->email_address = $obj->homepage = $obj->user_id = '';
$obj->user_name = $obj->nick_name = 'anonymous';
$bAnonymous = true;
}
그래서 그 부분을 주석도 해보고, 아니면 받고 싶은 메일 값을 넣어도 줘보았는데 여전히 메일이 오지 않았습니다.
그 외에도 $obj->email_address 또한 빈 문자열이면 마지막에 send 할 때 실패가 될 것 같아서 이곳에도 이메일 주소를 넣었고,
$obj->notify_message = 'N'; 도 'Y' 를 넣었습니다.
마지막으로
if($output->toBool() && $this->module_info->admin_mail) {
이 부분에서도 output이 false가 나는게 아닐 까 해서
if($this->module_info->admin_mail) { 이렇게도 해보았고,
if($output->toBool() || $this->module_info->admin_mail) { 이렇게도 해보았습니다만
여전히 메일이 오지 않습니다.
수정하는 파일이 정말 작동하는 파일인지는
메일 보낼 때 서식이라고 볼 수 있는
From : ..................
이 부분을 From :: 으로 콜론 두개를 붙여 수정하였고 맞는 것을 확인했습니다.
어디가 잘못된건지 궁금합니다.
댓글 2
-
송동우
2013.06.24 16:49
-
BonaSera
2013.06.24 16:52
송동우님 이름이 질문게시판에서 많이 언급되시는 것에 대해 안 좋아하시는 것 압니다. 하지만 전 @로 호출 하지 않았고, 저에게 답변 주실 어떤 분들이 송동우님 팁을 안내해줄 수도 있을 것 같아서 거론했습니다만, 어째뜬 죄송하고 다음부턴 안 그러겠습니다. -
BonaSera
2013.06.24 16:53
또는 어떠한 시도, 검색등을 적용해보았다는 말을 하고 싶어서 그랬습니다. 죄송합니다. -
송동우
2013.06.24 19:07
기분이 나쁘다는 것이 아니라 이름이 거론될 이유가 전혀 없다는 것입니다.....
예전의 질문과 연관이 있다면 링크를 걸면 되고
그 답변이 제가 올린 답변이라 하더라도
링크만 걸면 되는 것이죠.......
이 질문을 봤을 때, 제 이름이 거론될 이유를 전혀 알 수가 없습니다....
어디의 어떤 부분을 참고했는데 현재 적용이 안된다라던가.....
그러한 3자가 글을 읽었을 때 전혀 생뚱맞게 이름만 적혀있으니
과거의 어떤 글과도 연관지을 수 없고.......
글을 쓰는 사람은 어떤 과거의 글을 봤다면
그 글을 링크하든가하지 않으면
글을 읽는 3자는 전혀 연관성을 갖지 못합니다........
과거의 글에서 참고를 하고
추가적 사항에 대해 질문속에 예전 답변자의 이름을 거론할 수는 있습니다만
지금 질문은 아무리 봐도 연관성을 찾을 수가 없네요........
글을 읽는 제 자신도 도데체 어디에 있는 무엇을 참고하고 맞지않다고 하는지 도통 알 수가 없으니.....
무슨 말인지 이해가 되었길 바랍니다......
-
BonaSera
2013.06.25 11:28
알겠습니다 죄송하다고 계속 그러는데도 뭔가 꼬집고 싶으신게 있으시군요 질답게에서 이름 많이 거론 되셔서 안 좋아 하시는 것 저도 잘 알고 있었습니다. -
BonaSera
2013.06.25 11:34
저도 "알고" 있었습니다. 그렇다면 이름과 함께 링크를 걸지 않았다고 해서 이렇게 까지 또 장문으로 지적하실 체력은 있으신지 궁금하네요 님의 서명글도 보아서 이해도 하고 그래서 일부러 @호출도 안했는데, 계속 되는 이름 거론에 너무 예민 하신듯 하네요. 너무 스트레스 받지 마시고, 저 말고 제목에 대 놓고 송동우님 이름 거론 하는 글에나 면박 주세요. -
BonaSera
2013.06.25 11:40
그리고 보통 한 문제로 검색 여러번 하다보면 송동우님의 지식이 대부분인게 사실입니다. 비슷한 문제를 갖고 있는 사람끼린 통상 저렇게 얘기해도 어느정도 예상합니다. 송동우님은 많은 글을 쓰시니까 당연히 다 기억하시는게 어려우신거죠. 제가 남들과 소통하는 방식이 간결하고 약식으로 적는걸 좋아하는데 제 개인 취향이 wrong 이라면 죄송합니다.
왜 제 이름이 거론되어야 하나요?
질문과 아무 상관도 없는듯 한데요.......