개발/Web
[HTML] mailto할때 한글 깨짐.
달님개발자
2025. 4. 15. 10:44
반응형
챗GPT의 도움으로 아래와 같이 메일을 보내는 코드를 받았다.
<section id="inquiry" class="section">
<div class="container">
<h2>견적 문의</h2>
<form action="mailto:araonesoft@gmail.com?subject=문의사항" method="POST" enctype="text/plain" autocomplete="off">
<input type="text" name="업체명" placeholder="귀사의 업체명을 입력하세요" required><br>
<input type="text" name="담당자명" placeholder="담당자명을 입력하세요" required><br>
<input type="tel" name="전화번호" placeholder="연락받으실 전화번호를 입력하세요" required><br>
<textarea name="문의내용" rows="5" placeholder="문의하실 내용을 적어주세요." required></textarea><br>
<div class="submit-wrap">
<button type="submit" class="submit_btn">문의 메일 보내기</button>
</div>
</form>
</div>
</section>
그런데 "메일 보내기"를 클릭하면 메일 앱이 뜨는데(나는 맥 사용중이다), 제목은 정상적으로 들어오는데 input으로 받은 텍스트가 깨져보인다.
인코딩쪽을 좀 봤는데, 잘안되었다.
그래서 form의 action을 없애버리고, js로 input의 내용을 읽어와서 mailto에 바로 넣게 하니 아래처럼 한글이 안깨져보인다.
<section id="inquiry" class="section">
<div class="container">
<h2>견적 문의</h2>
<form id="inquiryForm" autocomplete="off">
<input type="text" id="company" placeholder="귀사의 업체명을 입력하세요" required><br>
<input type="text" id="name" placeholder="담당자명을 입력하세요" required><br>
<input type="tel" id="phone" placeholder="연락받으실 전화번호 (안넣으셔도 됩니다)"><br>
<textarea id="message" rows="5" placeholder="문의하실 내용을 적어주세요 (조합원수를 같이 알려주세요)" required></textarea><br>
<div class="submit-wrap">
<button type="submit" class="submit_btn">문의 메일 보내기</button>
</div>
</form>
</div>
</section>
<script>
// Form에서 하면 한글이 깨져서 이렇게 스크립트로 함.
document.getElementById('inquiryForm').addEventListener('submit', function (e) {
e.preventDefault();
const company = encodeURIComponent(document.getElementById('company').value);
const name = encodeURIComponent(document.getElementById('name').value);
const phoneRaw = document.getElementById('phone').value;
const phone = phoneRaw ? encodeURIComponent(phoneRaw) : null;
const message = encodeURIComponent(document.getElementById('message').value);
let body = `업체명: ${company}%0D%0A담당자명: ${name}`;
if (phone) {
body += `%0D%0A전화번호: ${phone}`;
}
body += `%0D%0A문의내용: ${message}`;
const mailtoLink = `mailto:araonesoft@gmail.com?subject=OMR문의사항&body=${body}`;
window.location.href = mailtoLink;
});
</script>
한글 깨짐은 해결은 되었지만, 근데 이건 바로 메일을 보내지 못하고 메일 프로그램을 열어야해서 메일 설정이 안된곳에서는 불편하다. 바로 메일을 보낼수 있는 방법을 알아봐야겠다.
반응형