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 928100
346 응용 프로그래밍 WIndows Application의 실행 속도 측정 file JaeSoo 2023.09.06 3185
345 웹 프로그래밍 메모리 부족 현상 (allowed memory size of 134217728 bytes..) JaeSoo 2023.08.01 2207
344 웹 프로그래밍 Guzzle - cURL error 60: SSL certificate problem: unable to get local issuer certificate 문제 해결 file JaeSoo 2023.07.30 2188
343 웹 프로그래밍 XE 캐시파일 재성생후 404 Oops, Sorry. Page is not found! 나올때 JaeSoo 2023.07.29 2117
342 응용 프로그래밍 [Apple] 엔터프라이즈 계정신청 (Enterprise Program) file JaeSoo 2023.03.27 267
341 웹 프로그래밍 XE - " Fatal error: Class 'Object' not found in " / class 낫파운드 오류 file JaeSoo 2023.03.20 147
340 응용 프로그래밍 [MSA] MSA란 무엇인가? 개념 이해하기 file JaeSoo 2023.01.26 210
339 웹 프로그래밍 iOS 앱 개발을 위한 인증서 생성 및 관리 file JaeSoo 2023.01.18 218
338 프로그래밍 [ iOS ] 앱 스토어 개인, 회사, 엔터프라이즈 차이점 file JaeSoo 2023.01.09 237
337 웹 프로그래밍 PHP 파서 이해하기 (<?php의 php를 생략하고 간단히 <? 태그 와 ?> 태그를 사용하는 방법) JaeSoo 2016.08.10 322
336 프로그래밍 SVN의 cleanup 에러시 해결방법 JaeSoo 2016.05.05 728
335 프로그래밍 [오류해결] svn cleanup failed-previous operation has not finished; run cleanup if it was interrupted file JaeSoo 2016.05.05 611
334 프로그래밍 TortoiseSVN 계정변경 file JaeSoo 2016.05.05 582
333 프로그래밍 SVN passwd 설정 : 계정 (users/passwd) file JaeSoo 2016.05.04 543
332 웹 프로그래밍 XE 비회원 글쓰기 항목 지우기 file JaeSoo 2016.04.28 499
331 응용 프로그래밍 메모리 영역 (code, data, stack, heap) file JaeSoo 2016.03.23 747
330 응용 프로그래밍 [SVN] Subversion 명령들 file JaeSoo 2016.02.06 967
329 응용 프로그래밍 IBM JDK 1.6 에서 Spring 2.5.2를 사용할 때 GenericTypeResolver 에서 NullPointerException이 발생하는 문제 JaeSoo 2016.01.27 787
328 웹 프로그래밍 오른쪽 마우스 금지 소스 / 드래그 금지 소스 JaeSoo 2016.01.20 475
327 응용 프로그래밍 [전자정부 표준프레임워크] 톰캣(Tomcat) 설치하기 file JaeSoo 2016.01.02 535
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 18 Next
/ 18


즐겨찾기 (가족)

JAESOO's HOMEPAGE


YOUNGAE's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너