상세 컨텐츠

본문 제목

php mailer , PHP에서 이메일 발송하기 mail 함수 sendmail 없이 gmail, 네이버 smtp 이용하여 PHP코드만으로 메일발송

카테고리 없음

by 동해둘리 2019. 4. 8. 15:40

본문

반응형

php 페이지에서 이메일을 발송할 경우 mail 함수를 이용하여 발송합니다만, mail() 함수를 이용하는 경우 서버에 sendmail 이 설치되어 있어야 가능합니다. sendmail 서비스가 중지되거나 하면 메일발송에 문제가 생기기도 합니다.

 

 

그래서, 서버의 sendmail 을 이용하지 않고 gmail 이나 네이버의 SMTP를 이용하여 웹상에서 메일을 발송 할 수 있는 방법중의 하나가 PHP Mailer 입니다

 

PHP Mailer 는 아래 사이트에서 다운로드 받으실 수 있습니다

https://github.com/PHPMailer/PHPMailer

 

 

 

우측 중앙에 있는 Clone or download 를 클릭하여 다운로드받은 후에 압축을 풀면 다음과 같이 나옵니다. 이를 웹서버에 업로드 합니다

 

 

 

네이버의 smtp 를 사용하고자 할 경우에는 이메일 세팅에서 smtp 를 사용함으로 변경해야 합니다

 

 

 

위 코드중에서 phpmail_test.html 문서는 테스트를 위해 만든 파일이며 아래와 같습니다

 

<?php

use PHPMailer\PHPMailer\PHPMailer;

use PHPMailer\PHPMailer\Exception;

 

require "./src/PHPMailer.php";

require "./src/SMTP.php";

require "./src/Exception.php";

 

$mail = new PHPMailer(true);

 

try {

 

// 서버세팅

 

//디버깅 설정을 0 으로 하면 아무런 메시지가 출력되지 않습니다

$mail -> SMTPDebug = 2; // 디버깅 설정

$mail -> isSMTP(); // SMTP 사용 설정

 

// 지메일일 경우 smtp.gmail.com, 네이버일 경우 smtp.naver.com

 

$mail -> Host = "smtp.naver.com";               // 네이버의 smtp 서버

$mail -> SMTPAuth = true;                         // SMTP 인증을 사용함

$mail -> Username = "아이디@naver.com";    // 메일 계정 (지메일일경우 지메일 계정)

$mail -> Password = "비밀번호";                  // 메일 비밀번호

$mail -> SMTPSecure = "ssl";                       // SSL을 사용함

$mail -> Port = 465;                                  // email 보낼때 사용할 포트를 지정

 

$mail -> CharSet = "utf-8"; // 문자셋 인코딩

 

// 보내는 메일

$mail -> setFrom("help@naver.com", "이메일발송자명");

 

// 받는 메일

$mail -> addAddress("test1@naver.com", "receive01");

$mail -> addAddress("test2@teacher21.com", "receive02");

 

// 첨부파일

$mail -> addAttachment("./test1.zip");

$mail -> addAttachment("./test2.jpg");

 

// 메일 내용

$mail -> isHTML(true); // HTML 태그 사용 여부

$mail -> Subject = "이메일 제목";  // 메일 제목

$mail -> Body = "이메일 내용";     // 메일 내용

 

// Gmail로 메일을 발송하기 위해서는 CA인증이 필요하다.

// CA 인증을 받지 못한 경우에는 아래 설정하여 인증체크를 해지하여야 한다.

$mail -> SMTPOptions = array(

  "ssl" => array(

  "verify_peer" => false

  , "verify_peer_name" => false

  , "allow_self_signed" => true

  )

);

 

// 메일 전송

$mail -> send();

 

echo "Message has been sent";

 

} catch (Exception $e) {

echo "Message could not be sent. Mailer Error : ", $mail -> ErrorInfo;

}

?>

 

 

위 코드를 업로드 한 후 브라우저 상에서 열어보면 아래와 같이 메일일 발송된 것을 확인할 수 있습니다

 

 

아울러, PHP5 버전에서도 돌아갈 수 있게 PHPMailer.php 와 SMTP.php 코드중에서 

배열선언 부분을 수정해야 하는데 이는 아래 사이트에서 다운로드 받으실 수 있습니다

 

http://magic.wickedmiso.com/m/23

 

 

 

 

아래 정보에서 참조하였습니다

http://magic.wickedmiso.com/m/23

https://github.com/PHPMailer/PHPMailer

 

반응형

댓글 영역