PHP

[PHP] PHP Mailer SMTP 메일 발송

chsr 2020. 12. 23. 14:14
728x90
반응형

■ PHP Mailer SMTP 메일 발송

mail 함수 sendmail 없이 gmail smtp 를 이용하여 PHP 서버를 이용하여 메일 발송하는 방법입니다.

 

* 메일 발송할 메일 서버 필요 (무료 메일 서버 - gmail, 가장 간편)

support.google.com/mail/answer/7126229?hl=ko

 

다른 이메일 플랫폼을 통해 Gmail 확인하기 - Gmail 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com


1. php mailer 설치

github.com/PHPMailer/PHPMailer

 

PHPMailer/PHPMailer

The classic email sending library for PHP. Contribute to PHPMailer/PHPMailer development by creating an account on GitHub.

github.com

composer require phpmailer/phpmailer

상기 명령어를 이용하여 php mailer 설치


2. 메일 발송 모델 작성

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Load Composer's autoloader
require 'vendor/autoload.php';

// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      // Enable verbose debug output
    $mail->isSMTP();                                            // Send using SMTP
    $mail->Host       = 'smtp1.example.com';                    // Set the SMTP server to send through (email 보낼 때 사용할 서버를 지정)
    $mail->SMTPAuth   = true;                                   // Enable SMTP authentication (SMTP 인증을 사용함)
    $mail->Username   = 'user@example.com';                     // SMTP username (메일 계정)
    $mail->Password   = 'secret';                               // SMTP password (메일 비밀번호)
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` also accepted
    $mail->Port       = 587;                                    // TCP port to connect to (email 보낼 때 사용할 포트를 지정)
    $mail->CharSet    = "utf-8";                                // 문자셋 인코딩 (한글깨짐 인코딩 해결)

    //Recipients
    $mail->setFrom('from@example.com', 'Mailer');		// 보내는 메일
    $mail->addAddress('joe@example.net', 'Joe User');		// Add a recipient (받는메일)
    $mail->addAddress('ellen@example.com');			// Name is optional (받는메일, 수신자명 옵션)
    $mail->addReplyTo('info@example.com', 'Information');	// 답장
    $mail->addCC('cc@example.com');				// 참조
    $mail->addBCC('bcc@example.com');				// 숨은참조

    // Attachments (첨부파일)
    $mail->addAttachment('/var/tmp/file.tar.gz');         // Add attachments
    $mail->addAttachment('/tmp/image.jpg', 'new.jpg');    // Optional name (파일명 옵션)

    // Content
    $mail->isHTML(true);                                  // Set email format to HTML (HTML 태그 사용 여부)
    $mail->Subject = 'Here is the subject';				  	// 메일 제목
    $mail->Body    = 'This is the HTML message body <b>in bold!</b>';		// 메일 내용
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

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

 

* Body 메일 내용(본문)의 경우 HTML 코드를 작성 할 수 있는데, 이 때 CSS는 하기와 같이 style을 주지 않으면 일부 메일에서는 정상적으로 먹히지 않으니 참고바랍니다.

<div style="width:800px; height:100px;"></div>

 

728x90
반응형