PHP 외부 메일로 네이버 메일 사용하기
페이지 정보
본문
네이버 이메일을 웹페이지에 SMTP 외부메일 설정에서 사용하는 방법입니다.
네이버 2단계 인증관리 > 애플리케이션 등록
https://help.naver.com/service/5640/contents/8584?lang=ko
1. PHPMailer 폴더 업로드
PHPMailer 다운로드 : https://github.com/PHPMailer/PHPMailer
2. mail_naver.lib.php 생성
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
function mailer_naver($to_email, $to_name, $from_email, $from_name, $subject, $content, $is_html = true) {
require_once './PHPMailer-6.9.3/src/PHPMailer.php';
require_once './PHPMailer-6.9.3/src/SMTP.php';
require_once './PHPMailer-6.9.3/src/Exception.php';
$mail = new PHPMailer(true);
try {
// SMTP 설정
$mail->isSMTP();
$mail->Host = 'smtp.naver.com';
$mail->SMTPAuth = true;
$mail->Username = '네이버_아이디@naver.com'; // 네이버 이메일 주소
$mail->Password = '네이버_앱 _비밀번호'; // 네이버 앱 비밀번호 (2단계 인증 앱비밀번호)
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL
$mail->Port = '465'; // 네이버 SMTP 포트
// 한글 깨짐 방지
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
// 보내는 사람 설정
$mail->setFrom($from_email, '=?UTF-8?B?'.base64_encode($from_name).'?=');
$mail->addAddress($to_email, '=?UTF-8?B?'.base64_encode($to_name).'?=');
// 메일 제목 한글 깨짐 방지
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
// HTML 메일 여부 설정
$mail->isHTML($is_html);
$mail->Body = $content;
// 메일 전송
return $mail->send();
} catch (Exception $e) {
error_log('메일 발송 실패: ' . $mail->ErrorInfo);
return false;
}
}
2. mail_test.php 생성
<?php
include_once("./mail_naver.lib.php");
$to_email = 'happyjungcom@gmail.com'; // 받을 이메일
$to_name = '받는사람_이름';
$from_email = 'happyjung@naver.com';
$from_name = '보내는사람_이름';
$subject = '한글 테스트 메일';
$content = '<p>안녕하세요! 이 메일은 한글 인코딩 테스트입니다.</p>';
if (mailer_naver($to_email, $to_name, $from_email, $from_name, $subject, $content)) {
echo '이메일이 정상적으로 발송되었습니다.';
} else {
echo '이메일 발송에 실패했습니다.';
}
네이버 2단계 인증관리 > 애플리케이션 등록
https://help.naver.com/service/5640/contents/8584?lang=ko
1. PHPMailer 폴더 업로드
PHPMailer 다운로드 : https://github.com/PHPMailer/PHPMailer
2. mail_naver.lib.php 생성
<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
use PHPMailer\PHPMailer\SMTP;
function mailer_naver($to_email, $to_name, $from_email, $from_name, $subject, $content, $is_html = true) {
require_once './PHPMailer-6.9.3/src/PHPMailer.php';
require_once './PHPMailer-6.9.3/src/SMTP.php';
require_once './PHPMailer-6.9.3/src/Exception.php';
$mail = new PHPMailer(true);
try {
// SMTP 설정
$mail->isSMTP();
$mail->Host = 'smtp.naver.com';
$mail->SMTPAuth = true;
$mail->Username = '네이버_아이디@naver.com'; // 네이버 이메일 주소
$mail->Password = '네이버_앱 _비밀번호'; // 네이버 앱 비밀번호 (2단계 인증 앱비밀번호)
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; // SSL
$mail->Port = '465'; // 네이버 SMTP 포트
// 한글 깨짐 방지
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'base64';
// 보내는 사람 설정
$mail->setFrom($from_email, '=?UTF-8?B?'.base64_encode($from_name).'?=');
$mail->addAddress($to_email, '=?UTF-8?B?'.base64_encode($to_name).'?=');
// 메일 제목 한글 깨짐 방지
$mail->Subject = '=?UTF-8?B?'.base64_encode($subject).'?=';
// HTML 메일 여부 설정
$mail->isHTML($is_html);
$mail->Body = $content;
// 메일 전송
return $mail->send();
} catch (Exception $e) {
error_log('메일 발송 실패: ' . $mail->ErrorInfo);
return false;
}
}
2. mail_test.php 생성
<?php
include_once("./mail_naver.lib.php");
$to_email = 'happyjungcom@gmail.com'; // 받을 이메일
$to_name = '받는사람_이름';
$from_email = 'happyjung@naver.com';
$from_name = '보내는사람_이름';
$subject = '한글 테스트 메일';
$content = '<p>안녕하세요! 이 메일은 한글 인코딩 테스트입니다.</p>';
if (mailer_naver($to_email, $to_name, $from_email, $from_name, $subject, $content)) {
echo '이메일이 정상적으로 발송되었습니다.';
} else {
echo '이메일 발송에 실패했습니다.';
}
댓글목록
등록된 댓글이 없습니다.