import { useState, useEffect } from 'react'; import { X, Mail, Send } from 'lucide-react'; import { comms } from '@/communication'; interface MailTestDialogProps { isOpen: boolean; onClose: () => void; } export function MailTestDialog({ isOpen, onClose }: MailTestDialogProps) { const [formData, setFormData] = useState({ cate: '테스트', subject: '', fromlist: '', tolist: '', cc: '', bcc: '', body: '', }); const [processing, setProcessing] = useState(false); useEffect(() => { const loadUserEmail = async () => { try { const response = await comms.checkLoginStatus(); if (response.Success && response.IsLoggedIn && response.User) { const user = response.User as { Email?: string }; if (user.Email) { setFormData(prev => ({ ...prev, fromlist: user.Email || '' })); } } } catch (error) { console.error('사용자 정보 로드 오류:', error); } }; if (isOpen) { loadUserEmail(); } }, [isOpen]); useEffect(() => { const handleEscape = (e: KeyboardEvent) => { if (e.key === 'Escape' && isOpen) { onClose(); } }; if (isOpen) { window.addEventListener('keydown', handleEscape); return () => window.removeEventListener('keydown', handleEscape); } }, [isOpen, onClose]); const handleSubmit = async (mode: 'queue' | 'direct' | 'outlook' = 'queue') => { if (!formData.subject.trim()) { alert('제목을 입력해주세요.'); return; } if (!formData.tolist.trim()) { alert('수신자를 입력해주세요.'); return; } if (!formData.body.trim()) { alert('내용을 입력해주세요.'); return; } setProcessing(true); try { let response; if (mode === 'outlook') { // Outlook 미리보기 response = await comms.sendMailOutlook( formData.subject, formData.tolist, formData.cc, formData.bcc, formData.body ); } else if (mode === 'direct') { // 직접 발송 response = await comms.sendMailDirect( formData.cate, formData.subject, formData.fromlist, formData.tolist, formData.cc, formData.bcc, formData.body ); } else { // 발송 대기열에 추가 response = await comms.addMailData( formData.cate, formData.subject, formData.fromlist, formData.tolist, formData.cc, formData.bcc, formData.body ); } if (response.Success) { alert(response.Message || '처리되었습니다.'); if (mode !== 'outlook') { onClose(); // 폼 초기화 setFormData({ cate: '테스트', subject: '', fromlist: formData.fromlist, // 발신자는 유지 tolist: '', cc: '', bcc: '', body: '', }); } } else { alert(response.Message || '메일 처리에 실패했습니다.'); } } catch (error) { console.error('메일 처리 오류:', error); alert('메일 처리 중 오류가 발생했습니다.'); } finally { setProcessing(false); } }; if (!isOpen) return null; return (