후이즈서버 이용 게시판 글쓰기 메일받기 <<< 알려주세요.

후이즈에서 호스팅 하고 있습니다.

도메인은 www.ppagc.com 입니다.

후이즈와 이곳에서 다른 분이 올리신 글을 검색하여 lib/mailer.lib.php 파일을

<?

if (!defined("_GNUBOARD_")) exit;

// 메일 보내기 (파일 여러개 첨부 가능)

// type : text=0, html=1, text+html=2

function mailer($fname, $fmail, $to, $subject, $content, $type=0, $file="", $cc="", $bcc="") 

{

    global $config;

    global $g4;

    // 메일발송 사용을 하지 않는다면

    if (!$config[cf_email_use]) return;

    $fname   = "=?$g4[charset]?B?" . base64_encode($fname) . "?=";

    $subject = "=?$g4[charset]?B?" . base64_encode($subject) . "?=";

    //$g4[charset] = ($g4[charset] != "") ? "charset=$g4[charset]" : "";

$fmail = "[email protected]";

    $header  = "Return-Path: <$fmail>\n";

    $header .= "From: $fname <$fmail>\n";

    $header .= "Reply-To: <$fmail>\n";

    if ($cc)  $header .= "Cc: $cc\n";

    if ($bcc) $header .= "Bcc: $bcc\n";

    $header .= "MIME-Version: 1.0\n";

    //$header .= "X-Mailer: SIR Mailer 0.91 (sir.co.kr) : $_SERVER[SERVER_ADDR] : $_SERVER[REMOTE_ADDR] : $g4[url] : $_SERVER[PHP_SELF] : $_SERVER[HTTP_REFERER] \n";

    // UTF-8 관련 수정

    $header .= "X-Mailer: SIR Mailer 0.92 (sir.co.kr) : $_SERVER[SERVER_ADDR] : $_SERVER[REMOTE_ADDR] : $g4[url] : $_SERVER[PHP_SELF] : $_SERVER[HTTP_REFERER] \n";

    if ($file != "") {

        $boundary = uniqid("http://sir.co.kr/");

        $header .= "Content-type: MULTIPART/MIXED; BOUNDARY=\"$boundary\"\n\n";

        $header .= "--$boundary\n";

    }

    if ($type) {

        $header .= "Content-Type: TEXT/HTML; charset=$g4[charset]\n";

        if ($type == 2)

            $content = nl2br($content);

    } else {

        $header .= "Content-Type: TEXT/PLAIN; charset=$g4[charset]\n";

        $content = stripslashes($content);

    }

    $header .= "Content-Transfer-Encoding: BASE64\n\n";

    $header .= chunk_split(base64_encode($content)) . "\n";

    if ($file != "") {

        foreach ($file as $f) {

            $header .= "\n--$boundary\n";

            $header .= "Content-Type: APPLICATION/OCTET-STREAM; name=\"$f[name]\"\n";

            $header .= "Content-Transfer-Encoding: BASE64\n";

            $header .= "Content-Disposition: inline; filename=\"$f[name]\"\n";

            $header .= "\n";

            $header .= chunk_split(base64_encode($f[data]));

            $header .= "\n";

        }

        $header .= "--$boundary--\n";

    }

    @mail($to, $subject, $message, $headers, '-f'.$from); 

}

// 파일 첨부시

/*

$fp = fopen(__FILE__, "r");

$file[] = array(

    "name"=>basename(__FILE__),

    "data"=>fread($fp, filesize(__FILE__)));

fclose($fp);

*/

// 파일을 첨부함

function attach_file($filename, $file)

{

    $fp = fopen($file, "r");

    $tmpfile = array(

        "name" => $filename,

        "data" => fread($fp, filesize($file)));

    fclose($fp);

    return $tmpfile;

}

// 메일 유효성 검사

// core PHP Programming 책 참고

// hanmail.net , hotmail.com , kebi.com 등이 정상적이지 않음으로 사용 불가

function verify_email($address, &$error)

{

    global $g4;

    $WAIT_SECOND = 3; // ?초 기다림

    list($user, $domain) = explode("@", $address);

    // 도메인에 메일 교환기가 존재하는지 검사

    if (checkdnsrr($domain, "MX")) {

        // 메일 교환기 레코드들을 얻는다

        if (!getmxrr($domain, $mxhost, $mxweight)) {

            $error = "메일 교환기를 회수할 수 없음";

            return false;

        }

    } else {

        // 메일 교환기가 없으면, 도메인 자체가 편지를 받는 것으로 간주

        $mxhost[] = $domain;

        $mxweight[] = 1;

    }

    // 메일 교환기 호스트의 배열을 만든다.

    for ($i=0; $i<count($mxhost); $i++)

        $weighted_host[($mxweight[$i])] = $mxhost[$i];

    ksort($weighted_host);

    // 각 호스트를 검사

    foreach($weighted_host as $host) {

        // 호스트의 SMTP 포트에 연결

        if (!($fp = @fsockopen($host, 25))) continue;

        // 220 메세지들은 건너뜀

        // 3초가 지나도 응답이 없으면 포기

        socket_set_blocking($fp, false);

        $stoptime = $g4[server_time] + $WAIT_SECOND;

        $gotresponse = false;

        while (true) {

            // 메일서버로부터 한줄 얻음

            $line = fgets($fp, 1024);

            if (substr($line, 0, 3) == "220") {

                // 타이머를 초기화

                $stoptime = $g4[server_time] + $WAIT_SECOND;

                $gotresponse = true;

            } else if ($line == "" && $gotresponse)

                break;

            else if ($g4[server_time] > $stoptime)

                break;

        }

        // 이 호스트는 응답이 없음. 다음 호스트로 넘어간다

        if (!$gotresponse) continue;

        socket_set_blocking($fp, true);

        // SMTP 서버와의 대화를 시작

        fputs($fp, "HELO $_SERVER[SERVER_NAME]\r\n");

        echo "HELO $_SERVER[SERVER_NAME]\r\n";

        fgets($fp, 1024);

        // From을 설정

        fputs($fp, "MAIL FROM: <info@$domain>\r\n");

        echo "MAIL FROM: <info@$domain>\r\n";

        fgets($fp, 1024);

        // 주소를 시도

        fputs($fp, "RCPT TO: <$address>\r\n");

        echo "RCPT TO: <$address>\r\n";

        $line = fgets($fp, 1024);

        // 연결을 닫음

        fputs($fp, "QUIT\r\n");

        fclose($fp);

        if (substr($line, 0, 3) != "250") {

            // SMTP 서버가 이 주소를 인식하지 못하므로 잘못된 주소임

            $error = $line;

            return false;

        } else

            // 주소를 인식했음

            return true;

    }

    $error = "메일 교환기에 도달하지 못하였습니다.";

    return false;

}

?> 

이렇게 하였습니다만....틀린 것 같습니다. 메일이 오지 않네요.

제가 너무 초보라... 어디를 어떻게 수정해야 하는지... 잘 모르겠습니다.

관리자모드에서 글 작성시 메일보내기 다 설정했습니다.

메일테스트 해도 안됩니다.

게시판 글 작성시 메일 받기를 원하는 주소는 아이디@hanmail.net 입니다.

고수님들 번거로우시더라도 도움 부탁드립니다. _(__)_

답변 2개 / 댓글 2개

2014-09-25 (목) 11:15:24

소스코드는 별 문제는 없어 보입니다.

제가 말씀드렸다 시피 센드메일 모듈 사용이 가능한지 부터 문의해보세요

답변에 대한 댓글 1개

sendmail 모듈은 후이즈쪽에서 당연히 되는 거라 해서
후이즈쪽에 계속 전화문의 게시판 문의를 통해 해결했습니다.


lib/mailer.lib.php 에 아래 부분을 찾아 바꿔주니 됩니다.


$fmail = "admin@도메인"; (여기서 admin은 가상의 아이디라네요.)
그리고

@mail($to, $subject, $message, $headers, '-f'.$from); 가 아니라

@mail($to, $subject, $"", $headers, '-f'.$from);

으로 수정하니 메일테스트와 게시판 글쓰기 후 자동메일도 잘 됩니다.~


http://sir.co.kr/bbs/board.php?bo_table=g4_tiptech&wr_id=30393 님의 글을 읽고
무작정 복사 붙이기 해보니 되었습니다.
2014-09-25 (목) 10:35:28

메일 발송은 sendmail이라는 모듈에서 발송하게 되는데요

후이즈에서 이 모듈 사용가능하게 설정해두었는지 먼저 확인해보시는게 맞을겁니다.

답변에 대한 댓글 1개

후이즈 쪽에 문의해봐도 위와 같은 답변만 옵니다.
검색을 해봐도 제가 너무 초보라서 그런지 모듈 설정부분을 어디서 체크하는지 모르겠습니다.

죄송하지만 조금 자세히 설명해주셔요~

답변을 작성하려면 로그인이 필요합니다.