728x90
■ window 작업 스케줄러를 이용하여 smtp ,PHPMailer 이용하여메일 보내기 ( back_up.php )
- 돋보기 클릭 - 스케줄 검색 - [ window server : 작업스케줄러 이용 ]
- 참고 : https://doolyit.tistory.com/134
- 1. 기본준비 [ 네이버 smtp 허용 ]


- 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