RadarURL

웹 프로그래밍
2007.06.08 19:20

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

조회 수 7144 추천 수 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

?

공부 게시판

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

  1. [공지] 공부 게시판 입니다.

    Date2003.08.18 By처누 Views2016552
    read more
  2. 파주누수업체, 신속 해결의 모든 것

    Date2026.10.06 Category건강 By우중충한도적91 Views0
    Read More
  3. ㅇㅇ병원, 당신의 건강을 책임지는 현명한 선택

    Date2026.10.06 Categoryu-E(활성화) By빛나는달고나24 Views1
    Read More
  4. 양산싱크대막힘 시원하게 뚫는 비법

    Date2026.10.06 Categoryu-E(표준화) By예측불가토끼46 Views1
    Read More
  5. 용인두피문신 고민? 만족 후기 보려면

    Date2026.10.06 Category동식물 By절묘한솔개92 Views4
    Read More
  6. 토보샵: 명품레플리카 쇼핑의 시작

    Date2026.10.06 Category구글 애드센스 By얼어붙은흐름98 Views3
    Read More
  7. 대전누수, 근본 원인 해결의 시작

    Date2026.10.06 Category사무 소프트웨어 By적막한체이서42 Views1
    Read More
  8. 마인드 끝판왕 사이즈까지 장착 완료! 010---8293---0291---- 여기가 베트남인줄 마블 노래클럽

    Date2026.10.05 Category사업 By기운찬오소리38 Views1
    Read More
  9. 카-툑 gusim8003 [24시문의] 선불유심내구제/내구제대출/소액대출/급전/ 비대면대출 상조내구제 무직자대출 대출

    Date2026.10.05 Category건강 By어설픈오소리22 Views1
    Read More
  10. 강남엘리트❤️OlO-8655-OO53❤️친절문의24시 강남하퍼1등실장 #강남엘리트 #강남엘리트위치 #강남엘리트하퍼 #하이퍼블릭엘리트 #강남엘리트예약문의 #선릉엘리트 #선릉역엘리트 #강남사라있네

    Date2026.10.05 Category하드웨어 By괴랄한재규어89 Views1
    Read More
  11. 청담동셔츠룸 010 2817 0845 일정과 인원에 맞춘 셔츠룸 문의

    Date2026.10.05 Category블로그 By정열적인퀘이사14 Views1
    Read More
  12. 최근 테헤란로 벤처 밸리의 핵심 리더들 사이에서 ‘클래스가 다른 정통 수질과 프라이빗 무드’로 소문 자자한 '선릉 룸싸롱' 기습 방문, 인공미를 거부하는 무결점 뉴페이스들과 심장을 마비시킨 사심 플러팅에 제대로 저격당하고 온 솔직 후기

    Date2026.10.05 Category카메라 By희미한홍학99 Views1
    Read More
  13. 본식DVD, 웨딩영상 색감이 중요한 이유새 창 열림

    Date2026.10.05 Categoryu-E(활성화) By힘겨운귤35 Views2
    Read More
  14. 대전, 인천, 세종 하수구 막힘 문제 해결 방법

    Date2026.10.05 Category공지 By정열적인코요테90 Views4
    Read More
  15. <문경맥주> 구입 할 수 있는 곳은 새 창 열림

    Date2026.10.05 Category취미 By타오르는드래곤61 Views1
    Read More
  16. 강남건전지❤️OlO-8655-OO53❤️친절문의환영 #강남건전지 #강남유니콘 #선릉유니콘 #강남건전지위치 #선릉역건전지#대치동유니콘 #강남바커스 #선릉바커스 #선릉역바커스 #강남룸클럽 #선릉룸클럽 #강남베터리 #강남바데리

    Date2026.10.05 Category데이터베이스 By괴랄한재규어89 Views1
    Read More
  17. 용인두피문신 고민? 만족 후기 보려면

    Date2026.10.05 Category사무 소프트웨어 By날카로운꿩11 Views12
    Read More
  18. 카­톡 gusim8003 급전/내구제 (24시문의) 폰테크 소액대출 선불폰 가개통

    Date2026.10.05 Category논문 By타오르는켄타우로스86 Views1
    Read More
  19. 웨딩누브라, 완벽한 드레스 핏을 위한 선택

    Date2026.10.05 Category윈도우즈 By날카로운감시자22 Views5
    Read More
  20. 성공적인 중고화물차 선택, 현명한 가이드

    Date2026.10.05 Category인터넷 By붉은드래곤50 Views2
    Read More
  21. 인천맛집 순위

    Date2026.10.05 Category가상화 By차가운파편97 Views2
    Read More
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 132 Next
/ 132


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

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

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

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

JServer.kr

제이서버 메타블로그

재수 티스토리


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

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너