RadarURL

웹 프로그래밍
2007.06.08 19:20

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

Views 4744 Votes 0 Comment 0
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print

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
No. Category Subject Author Date Views
Notice [공지] 공부 게시판 입니다. 처누 2003.08.18 928087
2473 웹서버,WAS http를 https로 리다이렉트하는 여러가지 방법 new JaeSoo 2025.09.10 0
2472 웹서버,WAS SSL인증서 없이 HTTPS에서 HTTP로 되돌리기 new JaeSoo 2025.09.10 2
2471 웹서버,WAS [SSL] win-acme, Let's encrypt로 무료 SSL 인증서 발급 new JaeSoo 2025.09.10 0
2470 웹서버,WAS [SSL] Windows 10에서 Let's Encrypt로 SSL 인증서 무료 발급받기 new JaeSoo 2025.09.10 0
2469 웹서버,WAS 무료로 https SSL/TLS 인증서를 발급받을 수 있는 인증 기관 new JaeSoo 2025.09.10 0
2468 웹서버,WAS 아파치 서버에 https SSL 인증서 적용하는 방법 (apache httpd) new JaeSoo 2025.09.10 0
2467 웹서버,WAS 아파치2(Apache2) SSL HTTPS 적용하기 new JaeSoo 2025.09.10 0
2466 웹서버,WAS 아파치 웹서버에 멀티 도메인에 대한 80, 443 포트 설정하는 방법 newfile JaeSoo 2025.09.10 0
2465 소프트웨어 Google Photo 대신 Immich를 써보자 file JaeSoo 2025.08.07 126
2464 연애 남자 혹은 여자 진국 팁 JaeSoo 2025.07.24 116
2463 기타 MBTI검사 16가지 유형 “간단 명료”하게 정리! file JaeSoo 2025.07.01 132
2462 소프트웨어 [사진관리] PhotoPrism vs LibrePhoto 비교 소감 JaeSoo 2025.05.19 14
2461 네트워크 MDF실, TPS실, EPS실 이게 뭘까? file JaeSoo 2025.04.15 33
2460 업무 알아두면 좋은 직장인 용어 정리 file JaeSoo 2025.04.15 37
2459 건강 감기·독감·코로나19의 차이점, 신촌연세병원과 함께 알아봅시다. file JaeSoo 2025.01.08 29
2458 생활 집주인이 전세 보증금을 돌려주지 않을 때 JaeSoo 2024.11.29 26
2457 자동차 자전거 타이어 종류 및 추천 2편 (승차감 타이어, 국토종주!) JaeSoo 2024.10.15 53
2456 자동차 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까? [출처] 오도바이 센타 사장들은 어떤 브랜드를 싫어하고 좋아할까?|작성자 바이크신 file JaeSoo 2024.10.15 78
2455 윈도우즈 윈도우 자동 로그온 설정이 보이지 않을 때 조치사항 JaeSoo 2024.08.16 203
2454 모바일 갤럭시S22 시리즈에서 SKT LTE 무제한 핫스팟 쓰는 방법! (SKT LTE 요금제만 해당!) JaeSoo 2024.08.12 234
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


숭실대 인공지능학과


숭실대 통신연구실


베너