2018. 8. 28. 18:21

PHP 데이터 만들어서 메일로 보내고 싶어서, 찾은건데,


다른것보다 이게 좀 편해서 이거 사용법올려본다.


이거는 설치할것도 없이, 그냥 include 하면 된다.




밑에 블로그에서 퍼온거다

http://b.redinfo.co.kr/87


이건 메일 파일


Sendmail.php



위 파일을 다운 받고,


php에서 불러온다.


밑에글은 블로그에서 퍼온거~



 기본적으로 메일기능을 사용하기 위해선 클래스 파일을 추가한뒤 클래스 객체를 변수에 선언해야한다. 선언하는 방법은 아래와 같다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); ?>


 만약 설정값을 넘겨주어야 한다면 아래와같이 필요한 설정값을 배열로 넘겨주면된다.  아래의 예제에서는 전부다 넘겨주었지만, 기본적으로 생성자에서 자동적으로 설정된 값만 초기화 시키기 때문에 전부다 넘겨줄 필요없이 필요한 값만 넘겨주면 된다. 한가지 명심할점은 배열원소 첨자명은 주석에 나온 명칭처럼 반드시 일치하여야 한다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* + host : smtp 호스트 주소 + smtp_id : smtp 계정 아이디 + smtp_pw : smtp 계정 비번 + debug : 디버그표시기능 [1 : 활성 0 : 비활성] + charset : 문자 인코딩 + ctype : 메일 컨텐츠의 타입 */ $config=array( 'host'=>'ssl://smtp.gmail.com', 'smtp_id'=>'example@gmail.com', 'smtp_pw'=>'password', 'debug'=>1, 'charset'=>'utf-8', 'ctype'=>'text/plain' ); $sendmail = new Sendmail($config); ?>


 send_mail() - 메일보내기


 이 함수는 메일을 보내는 함수로 아래와 같은 인자값을 받는다. 기본적으로 앞쪽의 4개의 인자값들은 필수로 넣어주어야한다. 옵션의 경우 설정할 옵션값이 있을 경우에만 추가해 주면 된다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); /* + $to : 받는사람 메일주소 ( ex. $to="hong <hgd@example.com>" 으로도 가능) + $from : 보내는사람 이름 + $subject : 메일 제목 + $body : 메일 내용 + $cc_mail : Cc 메일 있을경우 (옵션값으로 생략가능) + $bcc_mail : Bcc 메일이 있을경우 (옵션값으로 생략가능) */ $to="hgd@example.com"; $from="Master"; $subject="메일 제목입니다."; $body="메일 내용입니다."; $cc_mail="cc@example.com"; $bcc_mail="bcc@example.com"; /* 메일 보내기 */ $sendmail->send_mail($to, $from, $subject, $body,$cc_mail,$bcc_mail) ?>

 

 attach() - 첨부파일추가 하여 메일보내기


  메일에 첨부파일이 있을 시 이 함수를 사용하면 된다. 첨부파일 같은경우 대용량일 경우 전송이 제대로 이루어 지지 않을 수 있다. 한가지 명심할점은 메일을 보낼시 첨부파일 메소드를 먼저 사용한뒤 메일을 보내야 한다는 점이다.


<?php /* 클래스 파일 로드 */ include "Sendmail.php"; /* 클래스 객체 변수 선언 */ $sendmail = new Sendmail(); /* + $path : 파일의 절대 경로 + $name : 파일의 이름을 설정 + $ctype : 메일 컨텐츠 타입 (옵션값으로 기본값은 application/octet-stream 이다 ) */ $path="test.txt"; $name="example.txt"; $ctype="application/octet-stream"; /* 첨부파일 추가 */ $sendmail->attach($path,$name,$ctype); $to="hgd@example.com"; $from="Master"; $subject="첨부파일이 있습니다."; $body="첨부파일이 추가되었습니다."; $cc_email="cc@example.com"; $bcc_mail="bcc@example.com"; /* 메일 보내기 */ $sendmail->send_mail($to, $from, $subject, $body,$cc_mail,$bcc_mail) ?>


 Sendmail 함수의 대한 설명은 여기까지며, PHP 의 클래스까지 다룰줄 안다면 크게 어려운점이 없을것이다. smtp 메일 서버 같은 경우 많은 테스트를 거치지 못했기 때문에, 메일 전송이 되지 않는 smtp 메일 서버 도 있을것이다. 그런 경우 해결방안이 없거나 수정이 어려울 시, 다른 smtp 메일 서버를 이용하는게 정신건강에 좋을것이다. 마지막으로 에러나 궁금한점은 댓글을 이용해주길



출처: http://b.redinfo.co.kr/87 [꿈꾸는 개발자]


================================================================

이거 만들어 주신 위에 분에게 감사를~~ㅎㅎㅎㅎ

추가로, 여러명에게 보낼때 하는법이다.


 => ex1) $to="hong1@example.com, hong2@example.com";  

    ex2)  $to=array('hong1@example.com','hong2@example.com';



위에꺼에 내가 하는법을 추가하자면,

Sendmai.php 파일을 열어서, 내 메일 서버를 적어야한다.




class Sendmail {

    /* smtp 의 호스트 설정 : 아래는 gmail 일경우 */

    var $host="ssl://smtp.gmail.com";

/* smtp 계정 아이디 입력 */

    var $smtp_id="example@gmail.com";

    /* smtp 계정 비밀번호 입력 */

var $smtp_pw="password";


위에 주소랑 적고,


$host에는 내 메일 서버는 ssl이 아니라,그냥 smtp.example.com 이렇게만 적었다.


그리고 포트가 틀릴때가 있는데, 그때는


if(!$this->fp = fsockopen($host, 465, $errno, $errstr, 10)) {


여기를 찾아서, 포트번호를 바꿔주면 된다.


2번째 465를 내가 사용하는 포트번호로 바꿔주면 된다.


처음에 이거를 못찾아서, 좀 헤맸다.



그리고, 내용을 쓸때, html은 좀 복잡해서,


그냥 $body에 다쓰니까 써지더라....ㅠㅠㅠㅠㅠ



'컴퓨터 > PHP' 카테고리의 다른 글

php json decode 시 에러 또는 Null뜰때.  (0) 2019.07.22
php 파일이동  (0) 2018.08.28
php 웹서버 절대경로 찾기  (0) 2018.08.28
crontab php 실행시 파일 경로  (0) 2018.08.28
php.ini 유용한 기본 설정법  (0) 2018.06.29
Posted by Tyson