[PHP] PHP 메일 발송[PHP] PHP 메일 발송

Posted at 2018. 4. 10. 00:11 | Posted in PHP/PHP Library
반응형




■ PHPMailer 다운받고 세팅하기.




01. https://github.com/PHPMailer/PHPMailer 사이트에 접속하여 PHPMailer-master.zip 파일을 다운받는다.



02. 다운받은 PHPMailer-master.zip 파일의 압축을 해제한다.




※ 필자는 포스팅 작성일 기준으로 PHP5 버전을 사용중이었기에 몇가지 문법이 맞지 않는 문제가 발생했었다.

   PHP7 버전을 사용중이라면 문제가 없겠지만 아래 버전을 사용하는 경우는 아래의 문서를 수정하여 사용해야 한다.



첨부파일 : PHPMailer.phpSMTP.php









참고 : http://still.tistory.com/172

참고 : https://support.google.com/a/answer/2520500?hl=ko




■ PHPMailer를 사용한 Gmail 전송




# 소스코드

<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require "./php_mailer/src/PHPMailer.php";
require "./php_mailer/src/SMTP.php";
require "./php_mailer/src/Exception.php";

$mail = new PHPMailer(true);

try {

    // 서버세팅
    $mail -> SMTPDebug = 2;    // 디버깅 설정
    $mail -> isSMTP();        // SMTP 사용 설정

    $mail -> Host = "smtp.gmail.com";                // email 보낼때 사용할 서버를 지정
    $mail -> SMTPAuth = true;                        // SMTP 인증을 사용함
    $mail -> Username = "지메일ID@gmail.com";    // 메일 계정
    $mail -> Password = "지메일 비밀번호";                // 메일 비밀번호
    $mail -> SMTPSecure = "ssl";                    // SSL을 사용함
    $mail -> Port = 465;                            // email 보낼때 사용할 포트를 지정
    $mail -> CharSet = "utf-8";                        // 문자셋 인코딩

    // 보내는 메일
    $mail -> setFrom("지메일ID@gmail.com", "transmit");

    // 받는 메일
    $mail -> addAddress("애플ID@me.com", "receive01");
    $mail -> addAddress("네이버ID@naver.com", "receive02");
    
    // 첨부파일
    $mail -> addAttachment("./test.zip");
    $mail -> addAttachment("./anjihyn.jpg");

    // 메일 내용
    $mail -> isHTML(true);                                               // HTML 태그 사용 여부
    $mail -> Subject = "PHPMailer 발송 테스트 입니다.";              // 메일 제목
    $mail -> Body = "PHPMailer 발송에 <b>성공</b>하였습니다.";    // 메일 내용

    // 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;
}
?>




# 출력결과① - 브라우저를 통해 소스코드를 실행 시킨다.





# 출력결과 - 받는 메일함으로 접속을 하면 아래와같이 메일이 성공적으로 도착한 것을 확인 할 수 있다.









■ PHPMailer를 사용한 NAVER 메일 전송



앞서 지메일에서는 CA인증이 필요했지만 네이버 메일에서는 CA인증이 필요치 않았다.


<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require "./php_mailer/src/PHPMailer.php";
require "./php_mailer/src/SMTP.php";
require "./php_mailer/src/Exception.php";

$mail = new PHPMailer(true);

try {

    // 서버세팅    
    $mail -> SMTPDebug = 0;    // 디버깅 설정
    $mail -> isSMTP();               // SMTP 사용 설정

    $mail -> Host = "smtp.naver.com";                      // email 보낼때 사용할 서버를 지정
    $mail -> SMTPAuth = true;                                // SMTP 인증을 사용함
    $mail -> Username = "네이버메일ID@naver.com";  // 메일 계정
    $mail -> Password = "메일 비밀번호";                   // 메일 비밀번호
    $mail -> SMTPSecure = "ssl";                             // SSL을 사용함
    $mail -> Port = 465;                                        // email 보낼때 사용할 포트를 지정
    $mail -> CharSet = "utf-8";                                // 문자셋 인코딩

    // 보내는 메일
    $mail -> setFrom("네이버메일ID@naver.com", "transmit");

    // 받는 메일
    $mail -> addAddress("ID@me.com", "receive01");
    $mail -> addAddress("지메일ID@gmail.com", "receive02");
    
    // 첨부파일
    $mail -> addAttachment("./test.zip");
    $mail -> addAttachment("./anjihyn.jpg");

    // 메일 내용
    $mail -> isHTML(true);                                                         // HTML 태그 사용 여부
    $mail -> Subject = "PHPMailer 발송 테스트 입니다.";                  // 메일 제목
    $mail -> Body = "PHPMailer 발송에 <b>성공</b>하였습니다.";    // 메일 내용
    
    // 메일 전송
    $mail -> send();
    
    echo "Message has been sent";

} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error : ", $mail -> ErrorInfo;
}
?>




# 출력결과 - 브라우저를 통해 코드를 실행한다.




# 출력결과 - 받는메일은 Gmail로 지정하였다.






반응형
//