CI 묻고 답하기

제목 [초보]phpmailer이용하기
글쓴이 헛발이 작성시각 2009/12/25 10:44:46
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 35491   RSS
결국 CI에서 제공해 주는 메일을 이용하지 못해서.. PHPMailer의 도움을 받기로 결심했어요...
CI이에겐 배신을 때려서 미안하기도 하고.. 저에게는 굴욕적이기도 하지만 PHPMailer만한 놈이 없네요.. ㅡ.ㅡ;

일단 phpmailer를 다운 로드 받아 ci/system/plugins/phpmailer/에 넣어 두었습니다.(각자 폴더는 틀리겠지만..)
그리고 class.phpmailer.php 파일명을 phpmailer_pi.php로 변경하였습니다.

콘트롤러
function _send_email($data,$post)
{
  $this->load->plugin('phpmailer/phpmailer');

  mb_language("japanese");
  mb_internal_encoding("UTF-8");

  $mail=new PHPMailer();

  $mail->CharSet = "iso-2022-jp";
  $mail->Encoding = "7bit";

  $mail->From       = "보내는사람이메일";
  $mail->FromName   = mb_encode_mimeheader(mb_convert_encoding("보내는사람이름","JIS","UTF-8"));
  $mail->Subject    = mb_encode_mimeheader(mb_convert_encoding("제목".$post['title'],"JIS","UTF-8"));
  $mail->Body       = mb_convert_encoding("본문","JIS","UTF-8");

  $mail->WordWrap   = 50;
  $mail->AddAddress($data->email);
  $mail->IsHTML(false); //이걸 true로 하니 줄바꿈이 안 먹히더라구요.. 그래서 false로 했어요..

  if(!$mail->Send()) {
    echo "Mailer Error: " . $mail->ErrorInfo;
  }
}
이렇게 해서 결국 docomo, au, softbank모두 메일이 깨지지 않도록 가게 하엿씁니다..
찾아 보니..

docomo, au는 iso-2022-jp가 사용할 수 있고
softbank는 utf-8 또는 shift-jis가 사용할수 있더는군요..
phpmailer는 어떻게 처리 하는지 잘 모르겠찌만..

암튼 굴욕적으로 phpmailer로 이용하였습니다..
근데 왜케 굴욕적으로 생각이 드는지....ㅡ.ㅡ;
 다음글 [초보]배열에 관하여 기초상식좀.. (5)
 이전글 CI 사용시 SSL적용에 질문입니다~~ (1)

댓글

양승현 / 2009/12/28 11:01:35 / 추천 0
저도 몇주전 회사에 원래 있던 메일함수를 이용해서 메일모듈을 만들었는데요.

글이 깨지는 바람에 고생좀 하였지요. 전 iconv를 이용해서 변환했답니다. 저흰 mbstring를 안쓰기에 ㅎㅎ 

한국어 메일이니 euc-kr로 바꿔서 보냈고요.

본문의 base64로 인코딩후 디코딩하면서 iconv로 변환하여 넣어주니 안깨지고 가더라고요.

메일보내는 방식이 외부 메일서버를 fsockopen으로 연결하여 보내다보니 이래저래 문제가 많네요.

테스트를 몇번이나 했는지 원.

잘 해결 하셨다니 다행입니다. ^^;
헛발이 / 2009/12/28 11:29:59 / 추천 0
감사합니다... ^^;