RadarURL

웹 프로그래밍
2007.06.08 19:20

PEAR로 메일을 보내는 3가지 방법

조회 수 4744 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

PEAR메일은 어떠한 상황에서라도 개발자들이 메일을 보낼수 있는
편리한 클래스 래퍼를 제공합니다.

오늘은 PEAR메일 클래스로 메일을 보내는 3가지 방법에 대해서 알아봅시다.
첫번째로는 PHP에서 제공한 mail함수가 있습니다.
PEAR가 PHP함수를 호출하고 이는 다시 시스템에 연결된 데몬에 메일서비스를 호출하게됩니다.
두번째는 sendmail에 직접 연결하는 것입니다.
스쿨의 팁란에서도 PHP의 메일 함수가 문제가 있을때 sendmail을 직접 호출해서 사용하는 방법을
많은 개발자들이 선호하고 있습니다.
세번째는 소켓을 연결하셔 SMTP서버와 직접 연결하는 것입니다.
서버자체에 메일서비스가 없을때 유용하게 사용할 수 있습니다.

먼저 PEAR로 간단하게 메일을 보내 봅시다.
<?
require_once 'Mail.php';

// 아래의 구문은 클래스 생성과 메서드 호출을 동시에 처리할 수 있습니다.
// 따라서 이 문은 $mail = new Mail(); $mail->factory('mail'); 과 같습니다.
$mail =& Mail::factory('mail');

$headers = array (
'From' => '보내는사람@메일.com',
'To' => '받는사람@메일.com',
'Subject' => '메일 제목'
);
// 같이 받을사람을 ,로 구분해 적습니다. 생략가능
$recipients = '참조1@메일.com,참조2@메일.com';
$body = '메일 본문';

$mail->send($recipients, $headers, $body);
?>

간단 하지요?
클래스 사용이 난해하다구요? 저는 그렇게 생각지 않습니다.
PEAR를 자주 쓰시다보면 다 거기서 거기로 보입니다. 익숙해 지는것이죠.

자 이번에는 PEAR메일을 이용해서 파일 첨부도 해봅시다.
아래는 PEAR메일 클래스로 메일을 보내는 3가지 방법에 대해서 설명하고 있습니다.
또한 아래의 예제는 제대로 실행되지 않습니다.

<?php
// 아래 함수들은 PEAR가 설치된 디렉토리에서 불러들이는 것입니다.
require_once 'Mail.php';
require_once 'Mail/mime.php';

$txtBody = 'TXT형식의 메일의 내용을 적습니다.';
$htmlBody = '<h1>HTML형식의 메일의 내용을 적습니다.</h1>';
$file = '첨부할 파일.zip';
$headers = array(
'From' => 'free_hewon@yahoo.co.kr',
'Subject' => 'Test용 mime 메세지'
)

$mime = new Mail_mime();

// 같이 받을사람을 ,로 구분해 적습니다. 생략가능
$recipients = '참조1@메일.com,참조2@메일.com';

// 메일 보내는 환경을 set 합니다. set으로 시작하니까 세팅하는 메서드 이겠죠.
$mime->setTXTBody($txtBody); // 텍스트형식으로 메일을 보낼경우
$mime->setHTMLBody($htmlBody); // HTML형식으로 메일을 보낼경우

// 여러 파일을 보내고 싶을때에는 반복해서 입력하시면 됩니다. add하는 메서드 이니까요.
$mime->addAttachment($file); // 파일첨부의 기본값은 application/octet-stream 입니다.
$mime->addAttachment($file, 'text/plain'); // 텍스트형으로 보내고 싶을경우

$body = $mime->get(); // base64엔코딩된 몸체를 얻습니다.
$headers = $mime->headers($headers); // base64엔코딩된 헤더를 얻습니다.

// 여기까지는 모두 동일한 방법입니다.
// 이제 메일을 보내는 3가지 방법입니다.

// PHP기본 메일함수를 이용할경우는 기본 메일설정으로 인스턴스를 생성합니다.
$mail =& Mail::factory('mail');

// sendmail을 이용할때는 sendmail 경로를 설정해주어야 합니다.
$params['sendmail_path'] = '/usr/lib/sendmail';
$mail =& Mail::factory('sendmail', $params);

// SMTP를 이용할때에는 smtp주소를 설정해야 합니다.
// localhost를 제외한 타 서버에서 보낼때에는 아이디와 패스워드가 필요합니다.

$params = array (
'host' => 'smtp.mail.yahoo.co.kr',
'auth' => 'true',
'username' => 'free_hewon',
'password' => '*****'
)
        
$mail =& Mail::factory('smtp', $params);

// 메일 보내는것은 3가지 모두 같습니다.
$mail->send($recipients, $headers, $body);

?>


-- 덧글 --

  sh.    02-11-15 15:51  
강혜원님은 pear를 정말 애용하시는것 같네요!! :) 
 
강혜원님은 pear를 정말 애용하시는것 같네요!! :)
 
   제로스.    02-11-15 17:26  
혜원님 덕분에 pear에 대해서 관심이 가는 것 같네요.
다음에도 수고 부탁 드릴께요. ;) 
 
혜원님 덕분에 pear에 대해서 관심이 가는 것 같네요.
다음에도 수고 부탁 드릴께요. ;)
 
   강혜원    02-11-15 18:04  
감사합니다 ^^
제로스님와 sh.님  덕분에 힘이 나는군요^%^ 
 
감사합니다 ^^
제로스님와 sh.님  덕분에 힘이 나는군요^%^
 
   수나    02-11-15 18:06  
아직 pear를 사용하지는 않았지만 많은 수고를 덜수 있을거 같더군요... 낭만고양이님에게 감사드리네요.. 위에 고양이..ㅋㅋ 
 
아직 pear를 사용하지는 않았지만 많은 수고를 덜수 있을거 같더군요... 낭만고양이님에게 감사드리네요.. 위에 고양이..ㅋㅋ
 
   sh.    02-11-15 18:13  
사실 pear에 관심을 가진지는 1년이 넘었는데,
당시에는 딱히 참고할 자료도 찾지 못했고
먼저 써볼 용기는 없고^^; (귀찮음도 큰몫)
앗 그런데 혜원님 홈에 가니 pear메뉴얼 번역하신게 있네요.
그리고 pear패키지중에 session관련된것은 없는것 같던데
제가 못찾는걸까요 아니면 ...
여튼 앞으로 pear에 대해서 많이 배우겠습니다 
 
사실 pear에 관심을 가진지는 1년이 넘었는데,
당시에는 딱히 참고할 자료도 찾지 못했고
먼저 써볼 용기는 없고^^; (귀찮음도 큰몫)
앗 그런데 혜원님 홈에 가니 pear메뉴얼 번역하신게 있네요.
그리고 pear패키지중에 session관련된것은 없는것 같던데
제가 못찾는걸까요 아니면 ...
여튼 앞으로 pear에 대해서 많이 배우겠습니다
 
   ...    02-11-15 19:35  
pear라는것을 오늘 처음알게 되었는데요...  컴포넌트랑 비슷한거라고 여기서 봤는데... 
http://phpschool.com/bbs2/inc_view.html?id=7850&code=tnt2&start=0&mode=search&s_que=pear&field=title&operator=and&period=all&category_id=
잘이해가 되지 않는데 패키지중에 한가지만 깔면 저런거 모두 사용할수 있는건가요?.아니면 저런 프로그램을 쓸려면 각각 깔아야하는건가요?^_^;잘이해가 되지 않네여 
 
pear라는것을 오늘 처음알게 되었는데요...   컴포넌트랑 비슷한거라고 여기서 봤는데... 
http://phpschool.com/bbs2/inc_view.html?id=7850&code=tnt2&start=0&mode=search&s_que=pear&field=title&operator=and&period=all&category_id=
잘이해가 되지 않는데 패키지중에 한가지만 깔면 저런거 모두 사용할수 있는건가요?.아니면 저런 프로그램을 쓸려면 각각 깔아야하는건가요?^_^;잘이해가 되지 않네여
 
   ...    02-11-15 19:36  
여러가지패키지가 있던게 그중에한개만 깔면되는건지 아니면 쓸프로그램에 따라서 여러개를 깔아야하는건지?^_^; 
 
여러가지패키지가 있던게 그중에한개만 깔면되는건지 아니면 쓸프로그램에 따라서 여러개를 깔아야하는건지?^_^;
 
   강혜원    02-11-15 20:52  
sh.님 session관련은 딱히 없는것 같습니다.
하지만 LiveUser를 사용하면 인증과, 권한을 DB에 저장할 수
있는것 같습니다.
...님 PHP 4.0.6이상에서는 PEAR가 기본적으로 깔립니다.
그리고 기본적인 패키지 또한 설치됩니다만,
컴포넌트식으로 쉽게 설치와 삭제를 하고 싶으시면
따로 PEAR만 다시 설치하시던지 PHP 4.3dev이상을 사용하셔야 합니다. 
 
sh.님 session관련은 딱히 없는것 같습니다.
하지만 LiveUser를 사용하면 인증과, 권한을 DB에 저장할 수
있는것 같습니다.
...님 PHP 4.0.6이상에서는 PEAR가 기본적으로 깔립니다.
그리고 기본적인 패키지 또한 설치됩니다만,
컴포넌트식으로 쉽게 설치와 삭제를 하고 싶으시면
따로 PEAR만 다시 설치하시던지 PHP 4.3dev이상을 사용하셔야 합니다.
 
   사비    02-11-18 18:43  
저도 오늘처음으로 pear을 이용해서 메일을 보내려고 하는데요..이상하게 안갑니다. smtp서버가 다른곳에 있고 거기를 통해서 보내려고하는데 $mail =& Mail::factory(\'smtp\', $params); 이거 밑으로는 php가 전부 안먹는거 같은데 머가 문제일까요?
참고는 저는 pear디렉토리를 카피해서 include해서 사용중입니다. 
 
저도 오늘처음으로 pear을 이용해서 메일을 보내려고 하는데요..이상하게 안갑니다. smtp서버가 다른곳에 있고 거기를 통해서 보내려고하는데 $mail =& Mail::factory(\'smtp\', $params); 이거 밑으로는 php가 전부 안먹는거 같은데 머가 문제일까요?
참고는 저는 pear디렉토리를 카피해서 include해서 사용중입니다.
 
   권혜화    03-01-08 15:19  
혜원님의 글을 보고 테스트를 해보니 잘되기는 하던데
한글이 깨지는 문제가 있더라구요.


그래서 Main/mime.php 에서 115 라인 정도에 있는


        $this->_build_params = array(
                                    \'text_encoding\' => \'7bit\',
                                    \'html_encoding\' => \'quoted-printable\',
                                    \'7bit_wrap\'    => 998,
                                    \'html_charset\'  => \'ISO-8859-1\',
                                    \'text_charset\'  => \'ISO-8859-1\',
                                    \'head_charset\'  => \'ISO-8859-1\'
이 내용을


                                    \'text_encoding\' => \'base64\',
                                    \'html_encoding\' => \'base64\',
                                    \'7bit_wrap\'    => 994,
                                    \'html_charset\'  => \'EUC-KR\',
                                    \'text_charset\'  => \'EUC-KR\',
                                    \'head_charset\'  => \'EUC-KR\'


이렇게 변경해주니 한글이 깨지지 않고 잘 가더라구요.
저도 잘은 모르지만 혹시나 한글이 깨지는 분들이 있으시면 참고하시라고 적어봤습니다.


                                    \'text_encoding\' => \'base64\',
                                    \'html_encoding\' => \'base64\',
이부분은


                                    \'text_encoding\' => \'quoted-printable\',
                                    \'html_encoding\' => \'quoted-printable\',


이렇게 써도 상관없습니다.
제가 MIME에 대해 잘 모르는 관계로 각각의 특징이 뭔지는 잘 모르겠고 해보고 잘 되는 방법을 사용하고 있습니다. ^^;


테스트 환경은 Mandrake 9.0 입니다. 
 
혜원님의 글을 보고 테스트를 해보니 잘되기는 하던데
한글이 깨지는 문제가 있더라구요.


그래서 Main/mime.php 에서 115 라인 정도에 있는


        $this->_build_params = array(
                                     \'text_encoding\' => \'7bit\',
                                     \'html_encoding\' => \'quoted-printable\',
                                     \'7bit_wrap\'     => 998,
                                     \'html_charset\'  => \'ISO-8859-1\',
                                     \'text_charset\'  => \'ISO-8859-1\',
                                     \'head_charset\'  => \'ISO-8859-1\'
이 내용을


                                     \'text_encoding\' => \'base64\',
                                     \'html_encoding\' => \'base64\',
                                     \'7bit_wrap\'     => 994,
                                     \'html_charset\'  => \'EUC-KR\',
                                     \'text_charset\'  => \'EUC-KR\',
                                     \'head_charset\'  => \'EUC-KR\'


이렇게 변경해주니 한글이 깨지지 않고 잘 가더라구요.
저도 잘은 모르지만 혹시나 한글이 깨지는 분들이 있으시면 참고하시라고 적어봤습니다.


                                     \'text_encoding\' => \'base64\',
                                     \'html_encoding\' => \'base64\',
이부분은


                                     \'text_encoding\' => \'quoted-printable\',
                                     \'html_encoding\' => \'quoted-printable\',


이렇게 써도 상관없습니다.
제가 MIME에 대해 잘 모르는 관계로 각각의 특징이 뭔지는 잘 모르겠고 해보고 잘 되는 방법을 사용하고 있습니다. ^^;


테스트 환경은 Mandrake 9.0 입니다.
 
   헐    05-01-18 17:25  
요즘 pear에 관심이 가긴가네요...-ㅅ-  
 

출처 : http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=13112

?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 928091
2473 연애 폭소클럽 제36회 - 즉석미팅 1 (김제동) file JaeSoo 2003.08.18 18981
2472 연애 폭소클럽 제37회 - 즉석미팅 2 (김제동) file JaeSoo 2003.08.18 17808
2471 연애 폭소클럽 제38회 - 방학특집 연애특강 1 (김제동) 1 file JaeSoo 2003.08.18 16361
2470 연애 폭소클럽 제39회 - 방학특집 연애특강 2 (김제동) file JaeSoo 2003.08.18 17828
2469 연애 폭소클럽 제40회 - 방학특집 연애특강 3 (김제동) file JaeSoo 2003.08.18 16842
2468 웹 프로그래밍 이미지 특정 부분에 링크 만들기 처누 2003.08.24 15624
2467 웹 프로그래밍 게시판에 자신의 FTP 자료 올리기 3 처누 2003.08.25 13135
2466 동식물 고양이 클리닉 - 고양이 기르기 file JaeSoo 2003.10.10 13693
2465 동식물 고양이 클리닉 - 고양이 품종 file JaeSoo 2003.10.10 13427
2464 동식물 고양이 클리닉 - 2개월에서 4개월령 고양이 관리 file JaeSoo 2003.10.11 13428
2463 동식물 고양이 클리닉 - 4개월에서 9개월령 고양이 관리 file JaeSoo 2003.10.11 13132
2462 동식물 고양이 클리닉 - 다자란 고양이 file JaeSoo 2003.10.13 13922
2461 동식물 고양이 클리닉 - 나이든 고양이 file JaeSoo 2003.10.13 13679
2460 동식물 고양이 클리닉 - 고양이의 영양 file JaeSoo 2003.10.13 13429
2459 동식물 고양이 먹이와 주의사항 file JaeSoo 2003.10.13 13902
2458 동식물 아기 고양이의 식사 file JaeSoo 2003.10.13 11821
2457 동식물 고양이 사료 급여량 file JaeSoo 2003.10.13 12880
2456 기타 편지봉투 쓰는 법 file JaeSoo 2003.10.21 16993
2455 웹 프로그래밍 제로보드 로그인 실패시 이유를 메세지로 알려주기 처누 2003.11.04 8459
2454 웹 프로그래밍 최근 게시물 출력시 링크게시물에 스타일시트 적용하기 처누 2003.11.06 7927
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 124 Next
/ 124


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너