Programming/PHP

PHP :: Cafe24 웹 호스팅 서버에서 SMTP 인증된 메일 발송하기

고고마코드 2022. 8. 13. 15:18
반응형

본 글은 Cafe24 웹 호스팅 서버에서 SMTP 인증된 메일을 발송하는 과정입니다.
꼭 Cafe24 웹 호스팅 서버 환경이 아니더라도 PHP로 SMTP 인증된 메일 발송이 필요하다면 3번부터 참고하시면 됩니다.


1. 무료 웹메일 신청

[호스팅 관리 > 무료그룹웨어/웹메일 신청]


신청하기 클릭 후 "웹메일 관리자 비밀번호 등록" 란에 비밀번호를 입력하면 바로 웹메일 신청이 완료됩니다.


메뉴 찾기가 어렵거나 동영상으로 보고 싶으신 분은 아래 igotit 님의 동영상을 참고하세요.

웹메일 신청 동영상


2. 무료 웹메일 관리자 로그인 - 계정 확인 및 추가

[호스팅센터 > 나의 서비스 관리]


상단의 "내가 신청한 목록"에서 "무료 웹메일 100MB"가 보이면 정상적으로 신청된 것입니다.
"무료 웹메일 100MB"를 클릭 후 확인을 눌러주세요.

웹메일관리자 바로가기


웹메일관리자 바로가기를 누르면 로그인하는 화면이 나오는데, 신청 시 입력했던 비밀번호를 그대로 입력하면 로그인 됩니다.

이메일 계정 추가


관리자 계정을 그대로 사용할 거라면 이메일 계정을 추가하지 않아도 됩니다.
계정아이디가 메일 수신자에게 그대로 보여지므로 저는 다른 계정을 추가했습니다.
밑에 부서정보나 사용자정보도 있는데 기본 정보(빨간 부분)만 입력하셔도 등록은 됩니다.


3. 무료 웹메일 사용자 로그인 - 기본 환경 설정 & POP3/SMTP 사용 설정

사용자 로그인


관리자는 로그아웃하고, 사용자 모드로 로그인 해주세요.
두 가지 설정을 해야 합니다.
아래 설정 접근 경로를 확인해 주세요.

[외부 메일 설정 > 기본환경 설정]


기본으로는 "국내(대한민국)IP만 허용"에 체크되어 있겠지만
해외 IP로 메일 발송을 할 가능성이 있는 경우 "제한없음"을 클릭해 주세요.

[외부 메일 설정 > POP3/SMTP 사용설정]

POP3 연결, SMTP 연결 모두 사용함으로 변경해야 합니다.
SMTP 인증된 메일을 발송하는 것이 목적이므로 우측의 [이메일, SMTP, SMTP PORT] 다른 곳에 메모해 두세요.


4. PHP 코드 수정

메일 라이브러리 추가

mailer.zip
0.24MB

만약 그누보드 기반으로 구축이 되어 있다면 이 과정은 건너뛰어도 됩니다. (단, 아래 소스 수정 부분은 해야 합니다!!)

G5_SMTP Config 설정

// SMTP
// lib/mailer.lib.php 에서 사용
#define('G5_SMTP',      '127.0.0.1');
#define('G5_SMTP_PORT', '25');
define('G5_SMTP',      'smtp.cafe24.com');
define('G5_SMTP_PORT', '587');

만약 그누보드 기반이면 /config.php 에 SMTP 정의하는 코드가 삽입되어 있습니다.
해당 부분을 사용할 smtp 관련 코드로 수정합니다.
만약 그누보드가 아니라도 네이밍은 다르게 해도 좋으니 SMTP 관련은 미리 정의해 두는 것이 좋습니다.

SMTP Auth 코드 삽입

// 메일 보내기 (파일 여러개 첨부 가능)
// type : text=0, html=1, text+html=2
function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc="", $bcc="")
{
    global $config;
    global $g5;

    // 메일발송 사용을 하지 않는다면
    if (!$config['cf_email_use']) return;

    if ($type != 1)
        $content = nl2br($content);

    $result = run_replace('mailer', $fname, $fmail, $to, $subject, $content, $type, $file, $cc, $bcc);

    if( isset($result['return']) ){
        return $result['return'];
    }

    $mail = new PHPMailer(); // defaults to using php "mail()"
    if (defined('G5_SMTP') && G5_SMTP) {
        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->Host = G5_SMTP; // SMTP server

        // smtp auth
        $mail->SMTPAuth = true; // SMTP Auth
        $mail->Username = 'test@test.cafe24.com'; // SMTP Auth id
        $mail->Password = 'test1234'; // SMTP Auth password
        if(defined('G5_SMTP_PORT') && G5_SMTP_PORT)
            $mail->Port = G5_SMTP_PORT;
    }
    $mail->CharSet = 'UTF-8';
    $mail->From = $fmail;
    $mail->FromName = $fname;
    $mail->Subject = $subject;
    $mail->AltBody = ""; // optional, comment out and test
    $mail->msgHTML($content);
    $mail->addAddress($to);
    if ($cc)
        $mail->addCC($cc);
    if ($bcc)
        $mail->addBCC($bcc);
    //print_r2($file); exit;
    if ($file != "") {
        foreach ($file as $f) {
            $mail->addAttachment($f['path'], $f['name']);
        }
    }
    return $mail->send();
}

mailer() 함수 내에 smtp auth 부분을 추가&수정해야 합니다.

// smtp auth 주석 아래 부분입니다.

SMTPAuth 는 true로 설정하고

Username, Password 에는 위에서 추가했던 이메일 계정 정보를 입력하면 됩니다.


5. 메일 발송 테스트

  • mail_test.php
<?php
include_once('./mailer.lib.php');

$sender_name = "테스트";
$sender_email = "sender@gmail.com";
$receive_email = "receive@gmail.com"
$subject = "메일 제목";
$content = "메일 내용";

mailer($sender_name, $sender_email, $receive_email, $subject, $content, 1);
?>

sender_email에 위에서 만든 계정의 이메일을 추가하면 됩니다.

receive_email에 테스트할 수신 이메일을 작성하면 됩니다.

수신된 메일을 확인하면 끝입니다.

반응형