그누보드에서 네이버 SMTP와 PHPMailer를 활용해 외부 메일 발송 설정하기
페이지 정보

본문
문제 증상
그누보드의 기본 메일 발송 기능이 서버 환경이나 네이버 메일의 정책과 맞지 않아 스팸 처리되거나 발송에 실패하는 현상이 발생할 수 있습니다.
확인 과정
발송 실패는 보통 보내는 서버의 메일 발송 설정 문제에서 비롯됩니다. 네이버 SMTP를 사용하기 전 네이버 메일 환경설정과 인증 방식을 확인해야 합니다.
- 네이버 메일 환경설정의 POP3/IMAP 설정 페이지에서 IMAP/SMTP 사용 항목이 사용함으로 켜져 있는지 확인합니다.
- 보안 강화를 위해 네이버 2단계 인증이 활성화되어 있는지, 그리고 애플리케이션 비밀번호가 정상적으로 생성되었는지 확인합니다.
- 그누보드 설치 환경의 config.php 파일 및 lib 폴더 내 메일 관련 설정 구조를 점검합니다.
해결 방법
네이버 SMTP를 연동하기 위해서는 PHPMailer 라이브러리를 준비하고 설정 파일을 수정하거나 별도의 메일 발송 함수를 구현해야 합니다.
1. PHPMailer 라이브러리 업로드
PHPMailer 최신 버전을 다운로드하여 그누보드의 plugin 폴더에 업로드합니다. 디렉토리 구조는 다음과 같이 구성될 수 있습니다.
그누보드5
├ lib
│ └ mailer.lib.php
├ plugin
│ └ PHPMailer-6.9.3
│ └ src
│ ├ DSNConfigurator.php
│ ├ Exception.php
│ ├ OAuth.php
│ ├ OAuthTokenProvider.php
│ ├ PHPMailer.php
│ ├ POP3.php
│ └ SMTP.php
└ test_mail.php2. config.php 설정 수정
config.php 파일 내 SMTP 관련 상수를 네이버 SMTP 정보에 맞게 수정합니다.
define('G5_SMTP', 'smtp.naver.com');
define('G5_SMTP_PORT', '587');
define('G5_SMTP_SECURE', 'TLS');
define('G5_SMTP_USER', '[email protected]');
define('G5_SMTP_PW', 'yourpassword'); // 네이버 앱 비밀번호3. lib/mailer.lib.php 수정 또는 메일러 함수 구현
일반 페이지나 커스텀 환경에서 안정적으로 메일을 발송하기 위해 별도의 mailer_naver.lib.php 파일을 생성하여 네이버 SMTP 전용 함수를 구현할 수 있습니다.
<?php
if (!defined('_GNUBOARD_')) exit;
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(G5_PLUGIN_PATH . '/PHPMailer-6.9.3/src/PHPMailer.php');
require_once(G5_PLUGIN_PATH . '/PHPMailer-6.9.3/src/SMTP.php');
require_once(G5_PLUGIN_PATH . '/PHPMailer-6.9.3/src/Exception.php');
$mail = new PHPMailer(true);
try {
$mail->isSMTP();
$mail->Host = 'smtp.naver.com';
$mail->SMTPAuth = true;
$mail->Username = G5_SMTP_USER;
$mail->Password = G5_SMTP_PW;
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
$mail->Port = '465';
$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).'?=';
$mail->isHTML($is_html);
$mail->Body = $content;
return $mail->send();
} catch (Exception $e) {
error_log('메일 발송 실패: ' . $mail->ErrorInfo);
return false;
}
}
?>적용 후 점검
설정이 완료되면 웹브라우저에서 테스트 파일을 실행하여 정상 발송 여부를 확인합니다.
<?php
include_once('./common.php');
$from_email = $config['cf_admin_email'];
$from_name = $config['cf_admin_email_name'];
$to_email = '받는_이메일주소';
$to_name = '받는_이름';
$mail_subject = 'Title 네이버 SMTP 테스트 메일';
$mail_content = '<p>Message 이메일이 정상적으로 발송되었습니다.</p>';
include_once(G5_LIB_PATH . '/mailer_naver.lib.php');
if (mailer_naver($to_email, $to_name, $from_email, $from_name, $mail_subject, $mail_content)) {
echo '이메일이 정상적으로 발송되었습니다.';
} else {
echo '이메일 발송에 실패했습니다.';
}
?>주의사항
PHPMailer 버전 호환성 이슈나 네이버의 보안 정책 변경에 따라 설정 방법이 달라질 수 있으므로 적용 시 유의해야 합니다. 설정 변경 전에는 반드시 원본 파일을 백업하시기 바랍니다.
- 이전글아미나 빌더에서 삭제된 비메오 영상 링크로 인해 게시판 목록 오류가 발생할 때 해결하는 방법 26.09.12
- 다음글그누커머스 우편번호 서비스 로딩 오류 해결 방법 26.09.11
댓글목록
등록된 댓글이 없습니다.