<?php

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

require $_SERVER['DOCUMENT_ROOT'] . '/vendor/autoload.php'; // 운영 서버에서의 경로

// POST 데이터 안전하게 가져오기 (PHP 7.3 호환)
$email = isset($_POST['email']) ? $_POST['email'] : '';
$vendorName = isset($_POST['vendorName']) ? $_POST['vendorName'] : '';
$filename = isset($_POST['filename']) ? $_POST['filename'] : ''; // 전달받은 파일명
$item = isset($_POST['item']) ? $_POST['item'] : ''; // 거래명세표, 견적서, 총거래원장 등 선택
$issueDate = isset($_POST['formattedDate']) ? $_POST['formattedDate'] : ''; // [24.07.30]형태의 날짜
$sendCompany = '(주)경동기업';

function sendInvoiceEmail($to, $vendorName, $sendCompany, $issueDate, $item, $filename = null) {
    $mail = new PHPMailer(true);
    
    $setFrom_email =  'kd5130@naver.com';  // 보내는 회사이메일
    $email =  $setFrom_email ;  // 보내는 회사이메일 표기되는 것
    // 네이버 SMTP 비밀번호 설정
    // 참고: 일부 계정은 기본 비밀번호로도 작동할 수 있습니다
    // 만약 인증 오류가 발생하면 앱 비밀번호를 사용하세요
    // 앱 비밀번호 생성: 네이버 설정 → 보안 → 2단계 인증 활성화 → 앱 비밀번호 생성
    $password = 'kd9835130';   // 메일 패스워드 (기본 비밀번호 또는 앱 비밀번호)
    $setFrom_company =  $sendCompany ;  // 보내는 회사 
    $phone = '031-983-5130';    	

    try {
        // SMTP 디버그 모드 활성화 (문제 해결 시에만 사용)
        // 0: 디버그 비활성화, 1: 클라이언트 메시지, 2: 클라이언트/서버 메시지, 3: 연결 정보 포함
        $mail->SMTPDebug = 0; // 문제 해결 시 2로 변경하여 상세 로그 확인
        
        $mail->isSMTP();
        $mail->Host = 'smtp.naver.com';
        $mail->SMTPAuth = true;
        $mail->Username = $setFrom_email;
        $mail->Password = $password;
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port = 465;
        
        // 타임아웃 설정 추가 (PHP 7.3 호환)
        $mail->Timeout = 30;
        $mail->SMTPKeepAlive = true;

        $mail->CharSet = 'UTF-8';

        $mail->setFrom($setFrom_email, $setFrom_company);
        $mail->addAddress($to);
        
        // 첨부파일 추가
        if ($filename && !empty($filename)) {
            $filePath = $_SERVER['DOCUMENT_ROOT'] . '/pdfs/' . basename($filename); // 파일 경로
            
            // 파일 존재 여부 및 권한 확인
            if (!file_exists($filePath)) {
                throw new Exception("첨부파일을 찾을 수 없습니다: {$filePath}");
            }
            
            if (!is_readable($filePath)) {
                throw new Exception("첨부파일을 읽을 수 없습니다: {$filePath}");
            }
            
            $mail->addAttachment($filePath);
        }       

        $mail->isHTML(true);
        $mail->Subject = '[' . $sendCompany . '](으)로부터 [' . $item . '](이)가 도착했습니다. ' . $issueDate;

        // HTML 내용 작성
        $mail->Body    = '
        <html>
        <body>
            <p>수신 : ' . htmlspecialchars($vendorName, ENT_QUOTES, 'UTF-8') . '</p> <br>
            <p>' . htmlspecialchars($sendCompany, ENT_QUOTES, 'UTF-8') . '(으)로부터 ' . htmlspecialchars($item, ENT_QUOTES, 'UTF-8') . '(이)가 도착하였습니다.</p>
            <br>
            <table border="1" style="border-collapse: collapse; width: 100%;">
                <tr>
                    <th style="padding: 8px; text-align: left;">보낸회사</th>
                    <td style="padding: 8px;">' . htmlspecialchars($sendCompany, ENT_QUOTES, 'UTF-8') . '</td>
                    <th style="padding: 8px; text-align: left;">발행일자</th>
                    <td style="padding: 8px;">' . htmlspecialchars($issueDate, ENT_QUOTES, 'UTF-8') . '</td>
                </tr>
                <tr>
                    <th style="padding: 8px; text-align: left;">Email</th>
                    <td style="padding: 8px;">' . htmlspecialchars($email, ENT_QUOTES, 'UTF-8') . '</td>
                    <th style="padding: 8px; text-align: left;">연락처</th>
                    <td style="padding: 8px;">' . htmlspecialchars($phone, ENT_QUOTES, 'UTF-8') . '</td>
                </tr>
                <tr>
                    <th style="padding: 8px; text-align: left;">메모</th>
                    <td style="padding: 8px;" colspan="3"></td>
                </tr>
            </table>
        </body>
        </html>';

        $mail->AltBody = '수신 : ' . $vendorName . '\n' . $sendCompany . '(으)로부터 ' . $item . '(이)가 도착하였습니다.\n보낸회사: ' . $sendCompany . '\n발행일자: ' . $issueDate . '\nEmail: kd5130@naver.com\n연락처: 031-983-5130 \n메모:';

        // 읽음 확인 설정
        $mail->addCustomHeader('Disposition-Notification-To', $setFrom_email);
        $mail->addCustomHeader('Return-Receipt-To', $setFrom_email);

        $mail->send();
        echo json_encode(array('success' => true, 'message' => '메일이 전송되었습니다.'));
    } catch (Exception $e) {
        $errorMessage = "메일 전송 실패: " . $e->getMessage();
        error_log($errorMessage); // 서버 로그에 기록
        echo json_encode(array('success' => false, 'error' => $errorMessage));
    }
}

sendInvoiceEmail($email, $vendorName, $sendCompany, $issueDate, $item, $filename);
?>
