Programming language/PHP

PHP Mailer 네이버 메일 연동 + 2단계 인증

Think-About 2022. 11. 9. 19:55

PHP Mailer 네이버 메일 연동

아웃소싱 프로젝트를 하게 되면서 PHP를 다루게 되었습니다.
PHP Mailer를 다루다가 2단계 인증을 해지하고 사용해야 된다는 글을 많이 발견했습니다.
PHP Mailer 자체에서 네이버 2단계 인증을 지원하지 않아서인지는 잘 모르겠으나 아쉬운 정보가 많았습니다.
네이버 계정으로 애플리케이션 비밀번호를 생성하여 사용하면 되기에 공유하고자 글을 작성합니다.

Get ready for dev

아래 항목을 준비해주세요.

  • PHP Mailer 설치 및 프로젝트에 적용
    PHP Mailer가 준비되어 있지 않다면 Composer를 이용해 설치합니다.
    2022.11.09 - [프로그래밍 언어/PHP] - PHP Composer 설치 및 사용 예시
    PHP Mailer 깃허브에서 직접 다운로드 받아 본인 프로젝트에 적용하셔도 무방합니다. (개인적으로 비추합니다.)

  • 네이버 메일 SMTP 사용 설정 확인
    네이버 - 메일 - 환경설정 - POP3/IMAP 설정 - POP3/SMTP 사용
    이 설정을 하지 않으면 네이버 선에서 막힙니다.

 

네이버 애플리케이션 비밀번호 생성

아래와 같은 순서대로 진행하여 네이버 애플리케이션 비밀번호를 생성해줍니다.

네이버 로그인 및 설정 진입
보안설정 클릭
2단계 인증 관리 클릭
애플리케이션 비밀번호 관리에서 생성

종류선택에서 직접 입력을 선택하시고 애플리케이션 이름을 적어주시면 됩니다.
이는 추후 관리를 위한 것이니 알아볼 수 있도록 적으시는 것을 추천드리며 위 예시는 "PHPMailer"로 했습니다.
생성하기 버튼을 누르면 '3. 비밀번호 확인'에 비밀번호가 생성됩니다.
생성된 애플리케이션 비밀번호는 나중에 확인할 수 없으니 잘 기록해두시거나 보관해두셔야 합니다.

PHP 코드 작성

$mail = new PHPMailer(true);

// 한글 사용을 위한 설정
$mail->ContentType = "text/html";
$mail->CharSet = "UTF-8";

try {
  $mail->isSMTP();
  $mail->Host = 'smtp.naver.com';
  $mail->SMTPAuth = true;
  $mail->Username = '[본인 네이버 계정]@naver.com';
  $mail->Password = '[네이버 애플리케이션 비밀번호]';
  $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
  $mail->Port = 465;

  $mail->setFrom('[본인 네이버 계정]@naver.com', '이름');
  $mail->addAddress('[목적지 주소]');

  // 제목 (예시)
  $mail->Subject = 'Think about PHP Mailer Naver';
  // 내용 (예시)
  $mail->Body = 'PHP Mailer 네이버 SMTP 연동';

  $mail->send();

  echo '네이버 메일 전송 성공';
} catch (Exception $e){
  echo $e;
}

PHPMailer를 사용하여 네이버 SMTP를 연동하는 코드 예시입니다. 유의할 점이 몇 가지 있습니다.

  • Username의 경우 '네이버 계정' 형태로 적는 것이 아니라 '네이버 계정@naver.com' 형태를 지켜주세요.
  • Password의 경우 이전 단계에서 만들어둔 네이버 애플리케이션 비밀번호를 적어주세요.

개발이 끝나고 실행해보시면 다음과 같이 메일을 확인할 수 있습니다.

실행결과

이렇게 2단계 인증 기능을 해지하지 않고 여러분의 계정도 안전하게 지키면서 SMTP 서버도 이용할 수 있게 됐습니다.
잘 안 되시거나 질문이 있으시면 댓글을 남겨주세요.

도움이 되셨다면 좋아요 부탁드립니다.

 

'Programming language > PHP' 카테고리의 다른 글

PHP Composer 설치 및 사용 예시  (0) 2022.11.09