구글 SMTP 서버를 이용한 PHP Mailer 설정 방법을 정리했습니다.
구글 정책이 변경된 이후, 2차인증 설정과 앱 비밀번호를 설정해야 합니다.
구글 앱 비밀번호 설정
구글 앱 비밀번호 설정
1. 아래와 같이 2차인증과 앱 비밀번호를 설정할 계정으로 이동합니다.
2. ‘보안’ 탭에서 2단계 인증을 클릭합니다.
3. 클릭하면, 아래와 같은 화면이 나오게 됩니다.
4. 전화번호 입력 후, 인증절차를 거치게 되면 아래와 같은 메세지를 볼 수 있습니다.
5. 2단계 인증 설정 후, 상단 검색 탭에서 ‘앱 비밀번호’ 를 검색해줍니다.
6. 사용할 앱 이름을 입력 후, ‘만들기’를 클릭하면 앱 비밀번호가 생성됩니다.
PHPMailer 다운로드
PHPMailer 다운로드
1. PHPMailer 공식 깃헙 에 접속해서, 버전에 맞는 파일을 압축하여 다운로드 합니다.
(composer를 이용해서 설치하셔도 됩니다. 저는 압축파일을 다운로드 했습니다.)
브랜치를 선택하여, Tags 탭으로 이동 후, 버전에 맞는 브랜치를 선택 후 다운로드 받습니다.
(저는 가장 상단에 있는 최신버전을 선택했습니다.)
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'),
댓글