IT 알쓸신잡

그누보드 회원가입 시 관리자에게 메일 발송하기 본문

Development

그누보드 회원가입 시 관리자에게 메일 발송하기

솦트웰러 2023. 4. 3. 16:39
728x90
반응형

그누보드를 이용하여 사이트를 만들고 사용자가 회원가입을 했을 때,

자동으로 관리자 메일 주소로 메일이 가도록 하면 편하겠죠?

방법을 알아보도록 하겠습니다.

 

1. 설정 적용하기

https://도메인/adm 으로 들어가 관리자로 로그인을 한 후 환경설정>기본환경설정 에서,

관리자 메일 주소를 등록합니다.

 

그리고 환경설정 중간 쯤에, 최고관리자 메일발송이 있는데 "사용"에 체크하도록 합니다.

 

그리고 우측 상단에 "확인" 버튼을 클릭하면 설정이 저장됩니다.

 

2. 소스 변경

www/bbs/register_form_update.php 에 회원가입 시 최고관리자에게 메일 발송 소스입니다.

    // 최고관리자님께 메일 발송
    if ($config['cf_email_mb_super_admin']) {
        $subject = run_replace('register_form_update_mail_admin_subject', '['.$config['cf_title'].'] '.$mb_nick .' 님께서 회원으로 가입하셨습니다.', $mb_id, $mb_nick);

        ob_start();
        include_once ('./register_form_update_mail2.php');
        $content = ob_get_contents();
        ob_end_clean();

        $content = run_replace('register_form_update_mail_admin_content', $content, $mb_id);

        mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);

        run_event('register_form_update_send_admin_mail', $mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content);
    }

$config['cf_email_mb_super_admin'] 이 부분이 환경설정에서 최고관리자 메일발송 "사용"을 했을 때 1이 DB에 저장됩니다.

 

여기서 mailer 함수가 실제 메일을 발송하는 함수이며,

www/lib/mailer.lib.php 파일에 원본 함수가 있습니다.

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);

    $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
        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 원본 함수는 수정이 필요없습니다. 다만 인자를 살펴보면,

$fmail 이 보내는 사람 => $mb_email

$to 가 받는 사람 => $config['cf_admin_email'] 으로 되어 있군요....

 

별도의 메일서버를 구축하지 않고 그누보드의 메일 발송을 그대로 사용하기 위해서는,

도메인과 동일한 메일 주소가 보내는 사람이여야 합니다.

 

그런데 원본 소스에는 가입자가 보내는 사람으로 되어 있어서 발송이 안된 것입니다~~

원인을 알았으니 어떻게 수정하는게 좋을까요?

mailer($mb_nick, $mb_email, $config['cf_admin_email'], $subject, $content, 1);

이 부분을

mailer($mb_nick, $config['cf_admin_email'], $config['cf_admin_email2'], $subject, $content, 1);

이렇게 수정하고, DB 에 cf_admin_email2 필드를 하나 추가하여 관리자가 받을 메일을 하나 추가합니다.

 

cf_admin_email 메일에서 cf_admin_email2 메일로 메일을 보내게 되는 것이죠^^

 

그누보드가 편리하게 사용할 수 있지만 사용할수록 수정할 사항이 많아 보입니다~ 

그래도 손쉽게 해결되어 다행입니다.

 

다음 포스트에서 뵙겠습니다~

728x90
반응형
Comments