PHP Mailer 설정
🚆

PHP Mailer 설정

Tags
php
Published
Published November 10, 2024
Tweet
Slug
구글 SMTP 서버를 이용한 PHP Mailer 설정 방법을 정리했습니다.
 
구글 정책이 변경된 이후, 2차인증 설정과 앱 비밀번호를 설정해야 합니다.
 
💡
구글 앱 비밀번호 설정

구글 앱 비밀번호 설정

1. 아래와 같이 2차인증과 앱 비밀번호를 설정할 계정으로 이동합니다.

notion image
 

2. ‘보안’ 탭에서 2단계 인증을 클릭합니다.

notion image
 

3. 클릭하면, 아래와 같은 화면이 나오게 됩니다.

notion image
 

4. 전화번호 입력 후, 인증절차를 거치게 되면 아래와 같은 메세지를 볼 수 있습니다.

notion image
 

5. 2단계 인증 설정 후, 상단 검색 탭에서 ‘앱 비밀번호’ 를 검색해줍니다.

notion image
 

6. 사용할 앱 이름을 입력 후, ‘만들기’를 클릭하면 앱 비밀번호가 생성됩니다.

notion image
notion image
 
 
💡
PHPMailer 다운로드

PHPMailer 다운로드

1. PHPMailer 공식 깃헙 에 접속해서, 버전에 맞는 파일을 압축하여 다운로드 합니다.

(composer를 이용해서 설치하셔도 됩니다. 저는 압축파일을 다운로드 했습니다.)
 
브랜치를 선택하여, Tags 탭으로 이동 후, 버전에 맞는 브랜치를 선택 후 다운로드 받습니다.
(저는 가장 상단에 있는 최신버전을 선택했습니다.)
notion image
notion image
 

2. 적절한 FTP 경로에 해당 폴더를 업로드합니다.

 
 
💡
한글 인코딩 처리 및 PHP 설정부분

한글 인코딩 처리 및 PHP 설정부분

1. PHPMailer 설정 방법은 생각보다 간단합니다. 공식문서에 나와 있는대로 일단 설정해줍니다. 상단에, PHPMailer 를 사용하겠다고 선언 후, 실제 해당 폴더의 경로를 명시해줍니다.

 
composer 설치 이용 방법)
//Import PHPMailer classes into the global namespace //These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; //Load Composer's autoloader require 'vendor/autoload.php';
 
압축파일 다운로드 후 이용 방법)
//Import PHPMailer classes into the global namespace //These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; include_once '업로드한 경로/PHPMailer/src/Exception.php'; include_once '업로드한 경로/PHPMailer/src/PHPMailer.php'; include_once '업로드한 경로/PHPMailer/src/SMTP.php';
 
해당 부분을 명시해 주었다면, 공식문서에 나와 있는 샘플 코드를 각 자신의 환경에 맞게 설정해 줍니다.
(구글 이용 SMTP포트 번호는 587을 사용하므로 이 부분은 반드시 변경해주셔야 합니다!)
(반드시 변경이 필요한 부분은 한글 주석으로 표시했습니다!)
<?php //Import PHPMailer classes into the global namespace //These must be at the top of your script, not inside a function use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\SMTP; use PHPMailer\PHPMailer\Exception; // 경로명 명시 include_once '업로드한 경로/PHPMailer/src/Exception.php'; include_once '업로드한 경로/PHPMailer/src/PHPMailer.php'; include_once '업로드한 경로/PHPMailer/src/SMTP.php'; //Create an instance; 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 = 'smtp.example.com'; //Set the SMTP server to send through $mail->SMTPAuth = true; //Enable SMTP authentication $mail->Username = 'user@example.com'; //구글 이메일 주소 $mail->Password = 'secret'; //구글 앱 비밀번호 $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption $mail->Port = 587; //구글 SMTP포트번호 //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 $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->CharSet = 'UTF-8'; $mail->Encoding = 'base64'; $mail->send(); echo 'Message has been sent'; } catch (Exception $e) { echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}"; }
 
위 코드에서처럼 한글깨짐 방지설정을 해주어야 하는 것은 물론이고,
중요한건 한글깨짐 방지설정을 해당 함수를 호출하는 부분에서도 설정을 해주어야 합니다.
아래와 같은 방식으로 처리를 해줍니다.
htmlspecialchars('데이터를 받은 곳을 표기할 부분', ENT_QUOTES, 'UTF-8'),
 

2. 이제 아이디(또는 비밀번호) 찾기 시, 아래와 같이 메일 수신받을 수 있습니다.

notion image
 

댓글

guest