워드프레스 설치 후 설치 완료 메일, 댓글 관련 메일, 가입 및 암호 관련 메일 등 워드프레스 전체에 걸쳐 메일 수신 또는 발신 문제로 대부분 사용자가 메일 관련 플러그인을 사용하는 과정이 의무가 된 거 같습니다. 어떤 경우에는 수신의 문제가 때로는 발신의 문제가 발생하는데, 문제라는 것은 메일이 오지 않는다는 것이겠죠. 결국, 수신과 발신은 하나의 문제로 볼 수 있습니다.
메일이 오지 않는 수신의 문제는 발신의 문제에서 생겨야 하는데 워드프레스 사용자가 겪는 이 문제는 발신의 문제가 아니라 정책의 문제가 원인일 경우가 많다는 생각입니다. 꼭 워드프레스 경우로만 볼 수 없고, 모든 경우는 아니겠지만, 화이트 도메인 정책이 대표적입니다. 웹호스팅을 사용할 때 예를 들어, 호스팅 업체가 제공하는 무료 도메인을 사용하면 메일 수신에 문제가 없는데 자신의 도메인을 사용하면 수신이 되지 않는 경우가 많습니다. 서버를 운영할 때도 단순한 목적의 메일 발송을 위해 Sendmail
을 설치해도 화이트 도메인으로 등록하지 않으면 원하는 결과를 얻을 수 없습니다.
이런 문제 해소를 위해 플러그인을 설치하고, 구글의 Gmail 계정을 사용하여 메일 관련 문제를 처리하는 것이 일반화된 것으로 보입니다. 어차피 메일 관련한 문제를 워드프레스 사용 시 꼭 처리해야 한다면 플러그인도 좋지만, 코덱스 기본 예시와 안내의 스니핏을 사용하는 것도 좋다는 생각입니다.
서버 또는 공유 웹호스팅 환경에서 워드프레스를 사용할 때 메일 수신(발신) 문제가 생긴다면 워드프레스 phpmailer_init
훅에 관한 코덱스 안내를 빌려 다음에 나오는 코드를 사용하면 대부분 문제가 해결될 것입니다.
phpmailer_init
아래 코드는 Gmail SMTP를 사용할 경우로 사용하는 테마의 functions.php
파일에 단순하게 추가하면 됩니다. 플러그인 또는 MUP(Must Use Plugins) 형식으로 만들어 사용할 수도 있습니다. 자신의 계정정보(메일, 암호)만 변경하면 됩니다.
add_action( 'phpmailer_init', 'my_phpmailer' );
function my_phpmailer( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = get_option( 'admin_email' ); // 계정
//$phpmailer->Username = 'your_account@gmail.com'; // 계정 (관리자 이메일과 다른 메일 사용하려면 이 줄 활성화, 위 줄 삭제 또는 비활성)
$phpmailer->Password = 'password'; // 메일 계정 암호 (워드프레스 사용자 암호 아님)
$phpmailer->SMTPSecure = "tls"; // SSL or TLS
$phpmailer->From = get_option( 'admin_email' ); // Gmail SMTP 사용 시 Gmail 계정과 달라도 됨 (관리자 이메일과 다른 메일 사용하려면 이 줄 비활성 또는 삭제, 아래 줄 활성)
//$phpmailer->From = "your_account@gmail.com";
$phpmailer->FromName = get_option( 'blogname' ); // 보낸사람 이름, 비워두면 'WordPress'
//$phpmailer->Subject = get_option( 'blogname' ); // 필요할 때만, 메일 수신, 발신만을 위해서는 불필요
}
아래는 네이버 웍스 모바일(Naver Works Mobile)을 사용할 경우입니다. 해당 서비스 계정에서 SMTP 관련한 설정을 미리 확인하세요.
add_action( 'phpmailer_init', 'my_phpmailer' );
function my_phpmailer( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.worksmobile.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587; or 465(SSL)
$phpmailer->Username = 'my_account@mydomain.com'; // 계정
$phpmailer->Password = 'password';
$phpmailer->SMTPSecure = "tls"; // or SSL(465)
$phpmailer->From = "my_account@mydomain.com"; // 계정 메일과 같아야 함
$phpmailer->FromName = get_option('blogname'); // 보낸사람 이름, 비워두면 'WordPress'
//$phpmailer->Subject = get_option( 'blogname' ); // 필요할 때만, 메일 수신, 발신만을 위해서는 불필요
}
플러그인, Must Use Plugins
워드프레스로 여러 웹사이트를 구성하는 경우는 보통의 사용자에게 일어나지 않지만, 테마를 변경하는 등의 작업은 가끔 발생할 수 있습니다. 메일 문제는 테마 변경에서 독립되어야 하므로 플러그인으로 만들어 사용하는 것이 더 좋습니다. 입문자를 위해 남기는 것으로 아래 코드(Gmail 사용 시)에서 메일과 암호만 자신의 것으로 변경한 후에 원하는 파일명.php
파일을 만드세요. (예, myphpmailer.php
)
<?php
/**
* Plugin Name: Gmail SMTP
* Description: Gmail SMTP 사용하여 메일 발신
*/
add_action( 'phpmailer_init', 'my_phpmailer' );
function my_phpmailer( $phpmailer ) {
$phpmailer->isSMTP();
$phpmailer->Host = 'smtp.gmail.com';
$phpmailer->SMTPAuth = true;
$phpmailer->Port = 587;
$phpmailer->Username = 'your_account@gmail.com';
$phpmailer->Password = 'password';
$phpmailer->SMTPSecure = "tls";
$phpmailer->From = "your_account@gmail.com";
$phpmailer->FromName = get_option( 'blogname' );
}
워드프레스 설치 경로에서 wp-content > plugins
디렉터리에 파일을 올리고, 관리페이지에서 해당 플러그인(Gmail SMTP)을 활성화하면 됩니다.
Must Use Plugins로 사용하고 싶다면 wp-content > mu-plugins
디렉터리에 해당 파일을 올리면 되는데 mu-plugins
디렉터리는 없다면 추가하는 것입니다. 이 경우 플러그인 활성화는 필요하지 않습니다. 관리페이지 플러그인 목록을 보면 Must-Use
메뉴가 추가된 것을 확인할 수 있습니다. 더 많은 내용은 여기를 참고하세요.
sSMTP
서버를 운영할 때 간단한 sSMTP
유틸을 설치하여 사용하는 경우도 많은데, Gmail 사용할 때의 예시는 검색하면 너무 많이 나오니 네이버 웍스 모바일을 사용할 때 설정을 남깁니다. 처음 설정할 때 시행착오 방지를 위해 참고로. 서버에 복수의 사이트가 있거나 워드프레스가 존재한다면 phpmailer_init
훅을 사용한 위의 방식이 좋지 않을까 합니다.
(Gmail을 사용할 때 특정 번호의 오류 로그가 나올 수 있는데 대부분 구글 계정 설정의 변경이 필요한 경우로 sSMTP 설정과 무관한 경우가 많습니다.)

도메인 domain.com
, 메일 주소를 hello@domain.com
, 암호를 1234
로 가정합니다. 자신의 것으로 변경하면 됩니다.
//우분투 예시 : /etc/ssmtp/ssmtp.conf
#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=hello@domain.com
# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
mailhub=smtp.worksmobile.com:465
# Where will the mail seem to come from?
rewriteDomain=domain.com
AuthUser=hello@domain.com
AuthPass=1234
# The full hostname
hostname=domain.com
# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES
UseTLS=YES
Gmail SMTP 사용은 방대한 정보가 있어 쉽게 적용할 수 있고 편리합니다. 다만 우리나라에서 네이버 웍스 모바일보다 처리 속도가 늦습니다.
좋은 정보 공유해주셔서 감사합니다. 워드프레스 이메일 송/수신 문제가 발생하면 매번 플러그인에 의존할 수 밖에 없었는데, 앞으로는 본문의 코드로 쉽게 해결할 수 있을거 같아요. ^^
이 포스트 정보는 낡은 정보인데 검색을 해보니 국내 워드프레스 사용자 포스트 중에 메일 문제와 관련해서 모두 플러그인에 관한 내용만 있어 작성했습니다.
보통 메일 관련 플러그인 소스를 보면 이 포스트와 기본적으로 동일한 것이 대부분입니다. PHPMailer 클래스는 워프만이 아니라 대부분 PHP 프로그램에서도 사용하는 것이므로 일반적 정의의 설치 플러그인보다 스니핏 (플러그인)으로 사용하는 것이 좋지 않을까 합니다.
[…] 지난 글에 나온 워드프레스 메일 발신 관련 코드로 Gmail SMTP를 사용할 […]
대단히 감사합니다.
다른 어드바이스들도 참고해봤는데
이 글이 가장 간단하고도 빠르게 적용이 되는군요.
근데 제가 해보니 소스중 약간 수정할 부분이 있습니다.
웍스모바일 정책이 바뀌어서 서버 포트를 이 글 대로 하면 안됩니다.
port는 465 smtpsecure는 ssl 로 바까줘야 합니다.
감사합니다.
저는 계속 사용 중인데 문제가 없었습니다. 혹시나 해서 방금 다시 확인했는데 역시 아무 문제가 없네요. 오히려 전에는 안 되던
SSL(465)
지금은 되는군요.SSL(465)
,TLS(587)
번갈아 확인하면서 되는 것을 사용하면 어떨까요?