CI 묻고 답하기

제목 CI 이메일 전송 궁금한점 있습니다!
카테고리 CI 2, 3
글쓴이 if(money>0)happy 작성시각 2017/07/03 16:48:17
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 16287   RSS
if(money>0)happy

안녕하세요 선배님들!! 이번에는 CI 로 이메일을 전송하는부분을 구현하다가 궁금한 부분이 있어서 이렇게 질문 드려봅니다.

제가 PHP, CodeIgniter 를 공부하게된지 얼마 되지 않아서 개념이 많이 부족하지만 열심히 구글링도 해보고 포럼에서 찾아보면서

이메일 발송이 안되던 부분은 해결은 했습니다.

하지만 1번코드와 2번코드의 차이점이 제대로 이해가 가지 않아서 알려주셨으면 합니다.

1번 코드입니다.

모듈을 로드하고 -> config를 재정의하고 -> initialize를 호출해서 값을 초기화합니다.

public function send_mail($email,$random,$name){

                  //  echo "<xmp>";
                  //       print_r($_REQUEST);
                  //  echo "</xmp>";
                  //  exit;

                  // 메일 모듈 로드
                  $this->load->library('email');

                  $config = array();
                  $config['protocol'] = 'smtp';
                  $config['smtp_host'] = 'ssl://smtp.googlemail.com';
                  $config['smtp_user'] = 'my id@gmail.com';
                  $config['smtp_pass'] = 'my password';
                  $config['smtp_port'] = '465';
                  $config['mailpath'] = '/usr/sbin/sendmail';
                  $config['smtp_timeout'] = '10';
                  $config['mailtype'] = 'html';
                  $config['charset'] = 'euc-kr';
                  $config['newline']  = "\r\n";
                  $config['wordwrap'] = TRUE;

                  // 메일 설정값 초기화
                  $this->email->initialize($config);
                  $this->email->clear(true);

                   // 성공,실패 여부를 반환 할 변수
                   $result = "";

                  (!empty($email)) ? $email : "";
                  (!empty($name)) ? $name : "";
                  (!empty($random)) ? $random : "";

                  // 공통 함수로 정의하기때문에 랜덤숫자는 없어도 발송이 가능하도록한다, 하지만 이름과 이메일주소는 필수
                  if(($email!="")&&($name!="")){
                        $this->email->from('softfay50@gmail.com','관리자');
                        $this->email->to($email);
                        $this->email->subject('Email Test');
                        $this->email->message($random);

                        $this->email->send();

                        if(!$this->email->send()){
                              $this->email->set_alt_message('이메일 주소가 존재하지 않아 발송에 실패하였습니다.');
                              echo $this->email->print_debugger();
                              $result = "false";
                        } else {
                              echo "이메일 발송 성공";
                             $result = "true";
                        }
                  }

                  return $result;
             }

2번 코드입니다.

config 값을 재정의하고 모듈을 호출하면서 동시에 두번째 인자값에 config 값을 세팅해줍니다.

public function send_mail($email,$random,$name){

                  //  echo "<xmp>";
                  //       print_r($_REQUEST);
                  //  echo "</xmp>";
                  //  exit;

                  // 메일 모듈 로드
                  // $this->load->library('email');

                  $config = array();
                  $config['protocol'] = 'smtp';
                  $config['smtp_host'] = 'ssl://smtp.googlemail.com';
                  $config['smtp_user'] = 'ㅎㅎㅎ@gmail.com';
                  $config['smtp_pass'] = 'ㅎㅎ';
                  $config['smtp_port'] = '465';
                  $config['mailpath'] = '/usr/sbin/sendmail';
                  $config['smtp_timeout'] = '10';
                  $config['mailtype'] = 'html';
                  $config['charset'] = 'euc-kr';
                  $config['newline']  = "\r\n";
                  $config['wordwrap'] = TRUE;

                  // 메일 설정값 초기화
                  // $this->email->initialize($config);

                  $this->load->library('email',$config);
                  $this->email->clear(true);

                   // 성공,실패 여부를 반환 할 변수
                   $result = "";

                  (!empty($email)) ? $email : "";
                  (!empty($name)) ? $name : "";
                  (!empty($random)) ? $random : "";

                  // 공통 함수로 정의하기때문에 랜덤숫자는 없어도 발송이 가능하도록한다, 하지만 이름과 이메일주소는 필수
                  if(($email!="")&&($name!="")){
                        $this->email->from('softfay50@gmail.com','관리자');
                        $this->email->to($email);
                        $this->email->subject('Email Test');
                        $this->email->message($random);

                        if(!$this->email->send()){
                              $this->email->set_alt_message('이메일 주소가 존재하지 않아 발송에 실패하였습니다.');
                              echo $this->email->print_debugger();
                              $result = "false";
                        } else {
                              echo "이메일 발송 성공";
                              $result = "true";
                        }
                  }

                  return $result;
             }

 

결과적으로 둘 다 되기는하지만 명확히 어떤 차이가 있는건지 모르겠습니다.. 개념이 부족해서 그러하오니 

너그럽게 봐주시고 알려주시면 감사하겠습니다..

그리고 저는 CI  2.x 버전을 사용중이라서 http://codeigniter-kr.org/user_guide_2.1.0/toc.html 메뉴얼을 참고하면서 

하고있지만 상세하게 나와있지는 않는것같습니다(제가 못찾은걸수도 있지만요)..

혹시 참고 할 만한 사이트가있다면 그것도 알려주시면 감사하겠고,

리턴값의경우 문자열로 비교하기위해서 "true","false" 로 자주 사용하는데 부족한 부분이나 잘못된 부분이 있다면

알려주시면 정말 감사하겠습니다 선배님들!!

 다음글 DB_query_builder . 2358 line 문... (4)
 이전글 ci 페이지네이션 처음 보여지는 버튼 (2)

댓글

변종원(웅파) / 2017/07/03 17:07:19 / 추천 1

둘다 똑같으나 초기화는 재사용을 염두에 둔겁니다. a메일로 보내고 b메일로 보내려면 2번째 방식으로는 안됩니다.

ci에서 라이브러리 중복 로딩을 막고 있어서 위와 같은 케이스는 처리불가합니다.

if(money>0)happy / 2017/07/03 17:13:06 / 추천 0

//웅파

오오 감사합니다 웅파님 많이 배워갑니다!! (--)(__) 꾸벅