Files
ncue_academy/contactform/contactform.php
dsyoon a6efd603ce init
2025-12-27 13:11:25 +09:00

72 lines
2.2 KiB
PHP

<?php
// 수지 AI·데이터 아카데미 Contact Form mail handler
// Returns plain text: "OK" on success, otherwise an error message.
header('Content-Type: text/plain; charset=UTF-8');
function fail($msg) {
http_response_code(400);
echo $msg;
exit;
}
function post($key) {
return isset($_POST[$key]) ? trim((string)$_POST[$key]) : '';
}
$to = 'dsyoon@ncue.net';
$name = post('name');
$email = post('email');
$subject = post('subject');
$message = post('message');
if (mb_strlen($name) < 2) fail('이름을 입력해주세요.');
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) fail('이메일을 올바르게 입력해주세요.');
if (mb_strlen($subject) < 4) fail('제목을 입력해주세요.');
if (mb_strlen($message) < 10) fail('내용을 조금 더 자세히 입력해주세요(10자 이상).');
// Basic sanitization
$safe_name = str_replace(array("\r", "\n"), ' ', strip_tags($name));
$safe_subject = str_replace(array("\r", "\n"), ' ', strip_tags($subject));
$safe_email = filter_var($email, FILTER_SANITIZE_EMAIL);
$safe_message = trim(strip_tags($message));
$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
$ua = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$ts = date('Y-m-d H:i:s');
$mail_subject = '[수지 AI·데이터 아카데미 문의] ' . $safe_subject;
$mail_body =
"수지 AI·데이터 아카데미 문의가 도착했습니다.\n\n" .
"이름: {$safe_name}\n" .
"이메일: {$safe_email}\n" .
"제목: {$safe_subject}\n" .
"시간: {$ts}\n" .
"IP: {$ip}\n" .
"User-Agent: {$ua}\n\n" .
"내용:\n" .
"{$safe_message}\n";
// Many hosts reject arbitrary From. Use a neutral From and set Reply-To to the user.
$from = 'no-reply@ncue.net';
$headers = array();
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-Type: text/plain; charset=UTF-8';
$headers[] = 'From: 수지 AI·데이터 아카데미 <' . $from . '>';
$headers[] = 'Reply-To: ' . $safe_email;
$headers[] = 'X-Mailer: PHP/' . phpversion();
$ok = mail($to, $mail_subject, $mail_body, implode("\r\n", $headers));
if ($ok) {
echo "OK";
exit;
}
http_response_code(500);
echo "메일 전송에 실패했습니다. 서버 메일 설정(sendmail/SMTP)을 확인해주세요.";
exit;