워드프레스에 구글 SMTP 사용하기

이메일 전송 기능을 구현할 때 처음에는 플러그인을 사용했었다. 하지만 설정 과정이 복잡하고, 이후에도 주기적으로 상태를 점검해야 하는 번거로움이 있었다. 그래서 보다 단순하고 안정적인 방법을 찾다가 구글 SMTP를 활용하는 방식으로 전환했다.

SMTP를 설정하면 메일 전송 과정이 보다 원활해지고, 외부 메일 서비스를 사용할 때 발생할 수 있는 오류들도 줄어든다. 특히 한 번 설정해 두면 이후 별다른 관리가 필요 없어서 편리했다.

이제 구글 SMTP 설정 방법과 적용 코드를 정리해 둔다.

  • 구글 SMTP 설정하기
  • 코드 스니펫 플러그인 설치
  • 구글 SMTP 워드프레스에서 사용하기
  • 테스트 해보기

구글 SMTP 설정하기

먼저 구글 SMTP는 GMAIL에 들어가고, 우측 설정 버튼을 클릭하고 모든 설정 보기 버튼을 클릭한다.

설정에 보면 탭들이 있는데, 전달 및 POP/IMAP 탭을 클릭한다.

IMAP 사용을 클릭하고 변경사항을 저장한다.

우측 상단에 버튼을 클릭하고, 계정을 클릭한다.

계정 페이지에서는 보안 탭을 클릭하고, 2단계 인증을 클릭한다.

앱 비밀번호를 클릭

앱을 만들면 기기용 앱 비밀번호가 나오고, 해당 비밀번호로 SMTP 계정의 비밀번호로 사용한다.

코드 스니펫 플러그인 설치

플러그인 추가에 들어가서 WPCode Lite를 검색한다.

구글 SMTP 워드프레스에서 사용하기

플러그인을 설치했으면 코드를 추가하자, 플러그인 페이지에서 새로 추가 클릭

사용자 정의 코드 추가 클릭

PHP 스니펫 클릭

코드를 입력한다.

add_action('phpmailer_init', 'custom_smtp_mail_settings');

function custom_smtp_mail_settings($phpmailer) {
    // SMTP 설정값 입력
    $phpmailer->isSMTP();                              // SMTP 사용 선언
    $phpmailer->Host       = 'smtp.gmail.com';          // SMTP 호스트 (예: Gmail)
    $phpmailer->SMTPAuth   = true;                      // SMTP 인증 사용
    $phpmailer->Username   = '내 구글 이메일';    // SMTP 사용자명 (이메일)
    $phpmailer->Password   = 'SMTP 비밀번호';       // SMTP 비밀번호 (앱 비밀번호 사용)
    $phpmailer->SMTPSecure = 'tls';                     // 암호화 방식 (tls 또는 ssl)
    $phpmailer->Port       = 587;                       // 포트 번호 (tls: 587, ssl: 465)
    $phpmailer->From       = '내 구글 이메일';    // 보내는 이메일 주소
    $phpmailer->FromName   = '내 워드프레스 사이트 주소';          // 보내는 사람 이름
}

그리고 해당 코드를 활성화 해준다.

테스트 해보기

여러가지 방법이 있겠지만, 내 게시글 아무거나 댓글을 달아보거나, 코드를 하나 더 추가하는 방법이 있다, 코드 추가는 위에 방법처럼 진행하면 되고 워드프레스에서 메일을 보내는 함수인 wp_mail를 사용한다.

// 테스트 메일
// function send_test_email() {
//     $to      = '메일 수신자 이메일';  // 수신자 이메일
//     $subject = 'SMTP 테스트 메일';
//     $message = '이 메일은 SMTP 설정을 테스트하기 위해 발송되었습니다.';
//     $headers = ['Content-Type: text/html; charset=UTF-8'];

//     $result = wp_mail($to, $subject, $message, $headers);

//     if ($result) {
//         echo '메일이 성공적으로 전송되었습니다.';
//     } else {
//         echo '메일 전송에 실패했습니다.';
//     }
// }

// // 테스트 메일 전송 호출 (필요시 실행)
// send_test_email();

코드 스니펫에 해당 코드를 추가했고, 잘 동작하는 것을 확인했다면 해당 테스트 코드는 비활성화한다.

Leave a Comment