728x90

 

■ window 작업 스케줄러를 이용하여 smtp ,PHPMailer 이용하여메일 보내기 ( back_up.php )

- 돋보기 클릭 - 스케줄 검색 - [ window server : 작업스케줄러 이용 ]

- 참고 : https://doolyit.tistory.com/134

- 1. 기본준비 [ 네이버 smtp 허용 ]

- 2. php Mailer 라이브러리 넣기

PHPMailer-master.zip
0.11MB

- 3. D:\db-backup 경로에 백업할 폴더 생성

- 4.D:\xampp\htdocs\db_backup.php 에 아래 파일 넣기

<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require "library/PHPMailer-master/src/PHPMailer.php";
require "library/PHPMailer-master/src/SMTP.php";
require "library/PHPMailer-master/src/Exception.php";


backup_tables('localhost','db 사용자','db 사용자 pw','데이터베이스');
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
	$filename = "D:\db-backup\db-".date('YmdHis').".sql"; //db 백업할 폴더위치
	$mail = new PHPMailer(true);

	$return = "";
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	mysql_query("set names 'utf8'");

	if($tables == '*')
	{
		$tables = array();
		$result = mysql_query('SHOW TABLES');
		while($row = mysql_fetch_row($result)) {
			$tables[] = $row[0];
		}
	} else {
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
	foreach($tables as $table) {
		$result = mysql_query('SELECT * FROM '.$table);
		$num_fields = mysql_num_fields($result);
		$return.= 'DROP TABLE '.$table.';';
		$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
		$return.= "\n\n".$row2[1].";\n\n";
		for ($i = 0; $i < $num_fields; $i++) {
			while($row = mysql_fetch_row($result)) {
				$return.= 'INSERT INTO '.$table.' VALUES(';
				for($j=0; $j<$num_fields; $j++) {
					$row[$j] = addslashes($row[$j]);
					$row[$j] = ereg_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j<($num_fields-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}

	$handle = fopen($filename,'w+');
	fwrite($handle,$return);
	fclose($handle);

	try {
		// 서버세팅
		//디버깅 설정을 0 으로 하면 아무런 메시지가 출력되지 않습니다

		$mail -> SMTPDebug = 2; // 디버깅 설정
		$mail -> isSMTP(); // SMTP 사용 설정

		// 지메일일 경우 smtp.gmail.com, 네이버일 경우 smtp.naver.com
		$mail -> Host = "smtp.naver.com";               // 네이버의 smtp 서버
		$mail -> SMTPAuth = true;                         // SMTP 인증을 사용함
		$mail -> Username = "보내는자 이메일@naver.com";    // 메일 계정 (지메일일경우 지메일 계정)
		$mail -> Password = "비밀번호";                  // 메일 비밀번호
		$mail -> SMTPSecure = "ssl";                       // SSL을 사용함
		$mail -> Port = 465;                                  // email 보낼때 사용할 포트를 지정
		//$mail -> CharSet = "utf-8"; // 문자셋 인코딩
   		$mail->CharSet    = "EUC-KR";
   		$mail->Encoding   = "base64";

		// 보내는 메일
		$mail -> setFrom("보내는 메일", "보내는 사람이름");

		// 받는 메일 
		$mail -> addAddress("받는 메일1", "받는사람 이름1");
		$mail -> addAddress("받는 메일2", "받는사람 이름2");

		// 첨부파일
		$mail -> addAttachment($filename);
		//$mail -> addAttachment("./test2.jpg");

		// 메일 내용
		$mail -> isHTML(true); // HTML 태그 사용 여부
		$mail -> Subject = "DB백업 파일 (".$filename.")";  // 메일 제목
		$mail -> Body = "DB백업을 완료하였습니다.<br>filename : ".$filename;     // 메일 내용

		// Gmail로 메일을 발송하기 위해서는 CA인증이 필요하다.
		// CA 인증을 받지 못한 경우에는 아래 설정하여 인증체크를 해지하여야 한다.
		/*
		$mail -> SMTPOptions = array(
			"ssl" => array(
				"verify_peer" => false
				, "verify_peer_name" => false
				, "allow_self_signed" => true
			)
		);
		*/
		// 메일 전송
		$mail -> send();

		echo "Message has been sent";

	} catch (Exception $e) {

		echo "Message could not be sent. Mailer Error : ", $mail -> ErrorInfo;

	}
}
?>

■ 작업 스케줄러 설정

아래 사진처럼 순서대로 작업만들기 버튼을 누르고 순서대로 작업을 진행한다.

인수 추가옵션, 시작위치 옵션은 아래처럼 

db_backup.php 위치와 php.exe 경로에 맞게 작성해 주어야 한다.

-f D:\xampp\htdocs\db_backup.php

D:\xampp\php\

결과1

 

결과2

 

 

728x90

+ Recent posts