RadarURL

웹 프로그래밍
2007.06.08 19:20

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

조회 수 7139 추천 수 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 2010018
2618 블로그 청담동셔츠룸 010 2817 0845 일정과 인원에 맞춘 셔츠룸 문의 new 정열적인퀘이사14 2026.10.05 0
2617 카메라 최근 테헤란로 벤처 밸리의 핵심 리더들 사이에서 ‘클래스가 다른 정통 수질과 프라이빗 무드’로 소문 자자한 '선릉 룸싸롱' 기습 방문, 인공미를 거부하는 무결점 뉴페이스들과 심장을 마비시킨 사심 플러팅에 제대로 저격당하고 온 솔직 후기 new 희미한홍학99 2026.10.05 0
2616 u-E(활성화) 본식DVD, 웨딩영상 색감이 중요한 이유새 창 열림 new 힘겨운귤35 2026.10.05 1
2615 공지 대전, 인천, 세종 하수구 막힘 문제 해결 방법 new 정열적인코요테90 2026.10.05 4
2614 취미 <문경맥주> 구입 할 수 있는 곳은 새 창 열림 new 타오르는드래곤61 2026.10.05 1
2613 데이터베이스 강남건전지❤️OlO-8655-OO53❤️친절문의환영 #강남건전지 #강남유니콘 #선릉유니콘 #강남건전지위치 #선릉역건전지#대치동유니콘 #강남바커스 #선릉바커스 #선릉역바커스 #강남룸클럽 #선릉룸클럽 #강남베터리 #강남바데리 new 괴랄한재규어89 2026.10.05 1
2612 사무 소프트웨어 용인두피문신 고민? 만족 후기 보려면 new 날카로운꿩11 2026.10.05 8
2611 논문 카­톡 gusim8003 급전/내구제 (24시문의) 폰테크 소액대출 선불폰 가개통 new 타오르는켄타우로스86 2026.10.05 1
2610 윈도우즈 웨딩누브라, 완벽한 드레스 핏을 위한 선택 new 날카로운감시자22 2026.10.05 4
2609 인터넷 성공적인 중고화물차 선택, 현명한 가이드 new 붉은드래곤50 2026.10.05 2
2608 가상화 인천맛집 순위 new 차가운파편97 2026.10.05 2
2607 응용 프로그래밍 완벽한 웨딩드레스 핏의 비밀, 웨딩누브라 new 힘겨운암석76 2026.10.05 2
2606 카메라 파주누수업체, 신속 해결 전문가의 비결 new 차가운에메랄드79 2026.10.05 1
2605 u-E(통합센터) 올해의 핫플 선정 간석동 마블! 010&&8923&&0291 new 교활한감시자99 2026.10.05 1
2604 웹서버,WAS 손목터널증후군 치료, 현명한 선택 기준은? 괴상한두루미52 2026.10.05 1
2603 u-E(통합센터) 손목터널증후군, 두팔로정형외과에서 해답을 찾다 눈부신백마법사86 2026.10.05 2
2602 응용 프로그래밍 골든타워 010 2817 0845 골타문의 편하게 알아보는 셔츠룸 속삭이는미노타우르93 2026.10.05 2
2601 u-E(TestBed) 특별한 기념품제작, 판촉물365 광기의태풍18 2026.10.05 1
2600 건강 대전누수 문제, 청년연합누수가 답이다 몽환적인삵34 2026.10.05 2
2599 u-E(법,정책) 양산싱크대막힘, 뚫자하수구에서 한 번에 해결 낙관적인유니콘42 2026.10.05 1
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 131 Next
/ 131


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너