RadarURL

조회 수 5204 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
WINDOWS 군에서 메일링 서비를 원할때.....

1. 먼저 SMTP를 설치 해야 합니다.
시작 -> 제어판 -> 프로그램 추가/제거 -> Windows 구성요소 추가/제거 -> 인터넷 정보 서비스(IIS)를 찾아 선택합니다.
-> 우측하단 쯤 [자세히] 버튼 클릭 -> SMTP Service 선택 -> 확인 (설치시 windows 설치 cd 가 있어야 합니다.)


2. SMTP 설정하기
시작 -> 제어판 -> 관리도구 -> 인터넷 관리 서비스 -> 기본 SMTP 가상서버 선택 후 마우스 오른쪽 버튼 -> 속성 선택
[일반]에서의 설정 : 할당되지 않은 주소 모두
[엑세스]에서의 설정 : 연결제어 -> 연결버큰 클릭 -> 허가됨 127.0.0.1
[엑세스]에서의 설정 : 릴레이제한 -> 릴레이 클릭 -> 허가됨 127.0.0.1
나머지 탭은 설정해도되고 안해도 되고....
설정이 모두 끝났으면 IIS서버 중지 후 다시 실행


3. windows디렉의 php.ini에서 smtp = 127.0.0.1으로 바꿉니다.


4. 제로보드에 있는 admin_sendmail_ok.php를 메모장등으로 엽니다.
모두 선택한 후 다음의 내용으로 덮어 씁니다.


<?

        include "lib.php";
        $connect=dbConn();

        $member=member_info();
        if(!$member[no]) Error("로그인후 사용하여주십시요",".javascriptwindow.close();");
        if($member[is_admin]>3) Error("관리자페이지를 사용할수 있는 권한이 없습니다",".javascriptwindow.close();");

        if(isblank($from)) Error("보내는 이의 mail을 적어주십시요",".javascriptwindow.close();");
        if(isblank($name)) Error("보내시는 분의 이름을 적어주십시요",".javascriptwindow.close();");
        if(isblank($subject)) Error("제목을 적어주십시요",".javascriptwindow.close();");
        if(isblank($comment)) Error("내용을 적어주십시요",".javascriptwindow.close();");

        $temp=mysql_fetch_array(mysql_query("select count(*) from $member_table where group_no='$group_no'",$connect));
        $total_member_num=$temp[0];

        if($cart) {
                $temp=explode("||",$cart);
                $s_que=" and ( no='$temp[1]' ";
                for($i=2;$i<count($temp);$i++)
                $s_que.=" or no='$temp[$i]' ";
                $s_que.=" )";
        } else {

        // 직접 선택이 없을때
                $s_que=stripslashes($s_que);
        }

        $temp=mysql_fetch_array(mysql_query("select count(*) from $member_table where group_no='$group_no' and mailing='1' $s_que",$connect));
        $total_member=$temp[0];

        if($total_member==0) Error("메일을 보낼 회원이 없습니다",".javascriptwindow.close();");
        $result=mysql_query("select email from $member_table where group_no='$group_no' and mailing=1 $s_que",$connect);

        mysql_close($connect);  

        $comment = stripslashes($comment);

        head( "onload=window.resizeTo(550,600); bgcolor=e0e0e0");
?>

<table border=0 cellpadding=2 cellspacing=1 width=100% bgcolor=e0e0e0 height=30>
<tr>
        <td align=center>
                <b><b><?=$total_member?></b> / (<?=$total_member_num?>) 명의 회원에게 메일링을 발송합니다.
        </td>
</tr>
</table>

<?
        $fault=0;
        $i=1;
        while($data=mysql_fetch_array($result)) {
                flush();
                echo".";

                if($data[email]) {
                        $temp=zb_sendmail($html, $data[email], $data[name], $from, $name, $subject, $comment);
                        if(!$temp) $fault++;
                }
                flush();
                if($i%100==0) {
                        echo"<br>";
                }
                $i++;
        }
        flush();
?>

<br><br>
<table border=0 cellspacing=0 cellpadding=2 width=100% bgcolor=e0e0e0>
<tr align=center>
<td height=30>
<br>

<?
        if($fault>0) echo $total_member." 명의 멤버중 $fault 명의 멤버에게 메일을 보내지 못하였습니다 ";
        else echo $total_member." 명의 멤버에게 메일을 보냈습니다 ";
?>

<br><br>
<input type=button value="Window Close" onclick=window.close() style=border-color:#b0b0b0;background-color:#3d3d3d;color:#ffffff;font-size:8pt;font-family:Tahoma;height:23px;><br><br>
</td></tr></table>

<?
        foot();
?>



5. 제로보드에 있는 lib.php를 메모장등으로 엽니다.

다음의 내용을 찾아 바꿉니다.

755번째 줄에서 시작하는

// 제로보드의 기본 설정 파일을 읽어오는 함수
        function getDefaultSetup() {
                global $_zb_path;
                $data = zReadFile($_zb_path."setup.php");
                $data = str_replace("<?/*","",$data);        
                $data = str_replace("*/?>","",$data);        
                $data = explode("\n",$data);
                $_c = count($data);
                unset($defaultSetup);
                for($i=0;$i<$_c;$i++) {
                        if(!ereg(";",$data[$i])&&strlen(trim($data[$i]))) {
                                $tmpStr = explode("=",$data[$i]);
                                $name = trim($tmpStr[0]);
                                $value = trim($tmpStr[1]);
                                $defaultSetup[$name]=$value;
                        }
                }
                if(!$defaultSetup[url]) $defaultSetup[url] = $HTTP_HOST;
                if(!$defaultSetup[sitename]) $defaultSetup[sitename] = $HTTP_HOST;
                if(!$defaultSetup[session_path]) $defaultSetup[session_path] = "data/__zbSessionTMP";
                if(!$defaultSetup[session_view_size]) $defaultSetup[session_view_size] = 512;
                if(!$defaultSetup[session_vote_size]) $defaultSetup[session_vote_size] = 256;
                if(!$defaultSetup[login_time]) $defaultSetup[login_time] = 60*30;
                if(!$defaultSetup[nowconnect_enable]) $defaultSetup[nowconnect_enable] = "true";
                if(!$defaultSetup[nowconnect_refresh_time]) $defaultSetup[nowconnect_refresh_time] = 60*3;
                if(!$defaultSetup[nowconnect_time]) $defaultSetup[nowconnect_tim] = 60*5;
                if(!$defaultSetup[enable_hangul_id]) $defaultSetup[enable_hangul_id] = "false";
                if(!$defaultSetup[check_email]) $defaultSetup[check_email] = "true";
                if(!$defaultSetup[memo_limit_time]) $defaultSetup[memo_limit_time] = 7;
                $defaultSetup[memo_limit_time] = 60 * 60 * 24 * $defaultSetup[memo_limit_time];
                
                return $defaultSetup;
        }

이 부분을 다음의 내용으로 바꿔 줍니다.

// 제로보드의 기본 설정 파일을 읽어오는 함수
        function getDefaultSetup() {
        global $_zb_path, $HTTP_HOST;
               $data = zReadFile($_zb_path."setup.php");
               $data = str_replace("<?/*","",$data);        
               $data = str_replace("*/?>","",$data);        
               $data = explode("\n",$data);
               $_c = count($data);
                unset($defaultSetup);
                for($i=0;$i<$_c;$i++) {
                        if(!ereg(";",$data[$i])&&strlen(trim($data[$i]))) {
                                $tmpStr = explode("=",$data[$i]);
                                $name = trim($tmpStr[0]);
                                $value = trim($tmpStr[1]);
                                $defaultSetup[$name]=$value;
                        }
                }
                if(!$defaultSetup[url]) $defaultSetup[url] = $HTTP_HOST;
                if(!$defaultSetup[sitename]) $defaultSetup[sitename] = $HTTP_HOST;
                if(!$defaultSetup[smtpaddress]) $defaultSetup[smtpaddress] = "127.0.0.1";
                if(!$defaultSetup[session_path]) $defaultSetup[session_path] = "data/__zbSessionTMP";
                if(!$defaultSetup[session_view_size]) $defaultSetup[session_view_size] = 512;
                if(!$defaultSetup[session_vote_size]) $defaultSetup[session_vote_size] = 256;
                if(!$defaultSetup[login_time]) $defaultSetup[login_time] = 60*30;
                if(!$defaultSetup[nowconnect_enable]) $defaultSetup[nowconnect_enable] = "true";
                if(!$defaultSetup[nowconnect_refresh_time]) $defaultSetup[nowconnect_refresh_time] = 60*3;
                if(!$defaultSetup[nowconnect_time]) $defaultSetup[nowconnect_tim] = 60*5;
                if(!$defaultSetup[enable_hangul_id]) $defaultSetup[enable_hangul_id] = "false";
                if(!$defaultSetup[check_email]) $defaultSetup[check_email] = "true";
                if(!$defaultSetup[memo_limit_time]) $defaultSetup[memo_limit_time] = 7;
                $defaultSetup[memo_limit_time] = 60 * 60 * 24 * $defaultSetup[memo_limit_time];
                
                return $defaultSetup;
        }


946번째 줄에서 시작하는
        
// 메일 보내는 함수
        function zb_sendmail($type, $to, $to_name, $from, $from_name, $subject, $comment, $cc="", $bcc="") {
                $recipient = "$to_name <$to>";

                if($type==1) $comment = nl2br($comment);

                $headers = "From: $from_name <$from>\n";
                $headers .= "X-Sender: <$from>\n";
                $headers .= "X-Mailer: PHP ".phpversion()."\n";
                $headers .= "X-Priority: 1\n";
                $headers .= "Return-Path: <$from>\n";

                if(!$type) $headers .= "Content-Type: text/plain; ";
                else $headers .= "Content-Type: text/html; ";
                $headers .= "charset=euc-kr\n";

                if($cc)  $headers .= "cc: $cc\n";
                if($bcc)  $headers .= "bcc: $bcc";

                $comment = stripslashes($comment);
                $comment = str_replace("\n\r","\n", $comment);

                return mail($recipient , $subject , $comment , $headers);

        }

이 부분을 다음의 내용으로 수정합니다.

        function zb_sendmail($type, $to, $to_name, $from, $from_name, $subject, $comment, $cc="", $bcc="") {

                global $HTTP_HOST, $_zbDefaultSetup;

                $sendmail_hostname=$_zbDefaultSetup[smtpaddress];

                $fp = fsockopen($sendmail_hostname, 25, &$errno, &$errstr, 30);

                if(!$fp) Error("Sendmail 연결시 에러가 발생했습니다. <Br><br>$errstr ($errno)");

                fgets($fp, 128);
                fputs($fp, "helo $_zbDefaultSetup[hostname]\r\n");
                fgets($fp, 128);

                fputs($fp, "mail from: <$from>\r\n");
                $retval[0] = fgets($fp, 128);
                
                fputs($fp, "rcpt to: <$to>\r\n");
                $retval[1] = fgets($fp, 128);

                fputs($fp, "data\r\n");
                fgets($fp, 128);
                
                //fputs($fp, "Return-Path: 자신의메일@어쩌구.net\r\n");
                
                fputs($fp, "From: $from_name <$from>\r\n");

                fputs($fp, "To: $to_name <$to>\r\n");
                fputs($fp, "Subject: $subject\r\n");
                
                if($type==2) $content= "Content-Type: text/html; ";
                elseif($tyep==1) {
                        $content.= "Content-Type: text/html; ";
                        $comment=nl2br($comment);
                } else $content.= "Content-Type: text/plain; ";

                fputs($fp, $content);
                fputs($fp, "charset=\"EUC-KR\"\r\n\n\n");
                
                fputs($fp, $comment);
                
                fputs($fp, "\r\n");
                
                fputs($fp, "\r\n.\r\n");
                
                $retval[2] = fgets($fp, 128);
                
                fclose($fp);
                
                if ( !ereg("^250", $retval[0]) || !ereg("^250", $retval[1]) || !ereg("^250", $retval[2]) ) return 0;
                else return 1;
        }


6. 메일링 테스트 실시합니다.

메일링 테스트를 할때는 hanmail을 제외한 다른 메일을 선택하여 실시하는 것이 좋습니다.

부디 성공하시길 바랍니다.

출처 : http://www.nzeo.com/bbs/zboard.php?id=cgi_tip&page=1&sn1=&divpage=1&sn=off&ss=on&sc=off&keyword=메일&select_arrange=headnum&desc=asc&no=6762

ps : php는 수정 안해도 잘 되던데 난.. ^^
?

공부 게시판

공부에 도움되는 글을 올려주세요.

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 [공지] 공부 게시판 입니다. 처누 2003.08.18 950284
346 응용 프로그래밍 WIndows Application의 실행 속도 측정 file YooN 2023.09.06 3906
345 웹 프로그래밍 메모리 부족 현상 (allowed memory size of 134217728 bytes..) YooN 2023.08.01 2950
344 웹 프로그래밍 Guzzle - cURL error 60: SSL certificate problem: unable to get local issuer certificate 문제 해결 file YooN 2023.07.30 3126
343 웹 프로그래밍 XE 캐시파일 재성생후 404 Oops, Sorry. Page is not found! 나올때 YooN 2023.07.29 2847
342 응용 프로그래밍 [Apple] 엔터프라이즈 계정신청 (Enterprise Program) file YooN 2023.03.27 1386
341 웹 프로그래밍 XE - " Fatal error: Class 'Object' not found in " / class 낫파운드 오류 file YooN 2023.03.20 964
340 응용 프로그래밍 [MSA] MSA란 무엇인가? 개념 이해하기 file YooN 2023.01.26 986
339 웹 프로그래밍 iOS 앱 개발을 위한 인증서 생성 및 관리 file YooN 2023.01.18 1038
338 프로그래밍 [ iOS ] 앱 스토어 개인, 회사, 엔터프라이즈 차이점 file YooN 2023.01.09 778
337 웹 프로그래밍 PHP 파서 이해하기 (<?php의 php를 생략하고 간단히 <? 태그 와 ?> 태그를 사용하는 방법) YooN 2016.08.10 1173
336 프로그래밍 SVN의 cleanup 에러시 해결방법 YooN 2016.05.05 1590
335 프로그래밍 [오류해결] svn cleanup failed-previous operation has not finished; run cleanup if it was interrupted file YooN 2016.05.05 1446
334 프로그래밍 TortoiseSVN 계정변경 file YooN 2016.05.05 969
333 프로그래밍 SVN passwd 설정 : 계정 (users/passwd) file YooN 2016.05.04 1345
332 웹 프로그래밍 XE 비회원 글쓰기 항목 지우기 file YooN 2016.04.28 1335
331 응용 프로그래밍 메모리 영역 (code, data, stack, heap) file YooN 2016.03.23 1539
330 응용 프로그래밍 [SVN] Subversion 명령들 file YooN 2016.02.06 1757
329 응용 프로그래밍 IBM JDK 1.6 에서 Spring 2.5.2를 사용할 때 GenericTypeResolver 에서 NullPointerException이 발생하는 문제 YooN 2016.01.27 1589
328 웹 프로그래밍 오른쪽 마우스 금지 소스 / 드래그 금지 소스 YooN 2016.01.20 1168
327 응용 프로그래밍 [전자정부 표준프레임워크] 톰캣(Tomcat) 설치하기 file YooN 2016.01.02 1290
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 18 Next
/ 18


즐겨찾기 (가족)

JAESOO's HOMEPAGE


장여은 홈페이지


장여희 홈페이지


장여원 홈페이지


즐겨찾기 (업무)

알리카페 홀릭

숭실대 컴퓨터 통신연구실 (서창진)

말레이시아 KL Sentral 한국인 GuestHouse


즐겨찾기 (취미)

어드민아이디

유에코 사랑회

아스가르드 좋은사람/나쁜사람

JServer.kr

제이서버 메타블로그

재수 티스토리


즐겨찾기 (강의, 커뮤니티)

재수 강의 홈페이지


한소리


VTMODE.COM


숭실대 인공지능학과


숭실대 통신연구실


베너