# 받은편지함에서 바로 폼 제출에 답장하기

> 폼 알림에서 답장을 누르면 폼을 작성한 사람에게 가도록 하세요. 어떤 필드 이름이 동작하는지, _replyto는 언제 쓰는지, 답장이 엉뚱한 곳으로 가는 이유를 다룹니다.

2026-10-25 게시 · https://ikiform.com/ko/guides/send-form-to-email/reply-to

폼의 이메일 필드 이름을 `email`로 지정하면 Ikiform이 그 주소를 알림의 회신 주소 헤더에 넣으므로, **Reply**를 누르면 여러분의 메일함에서 방문자에게 답장합니다. 필드 이름이 다르거나 폼이 주소를 두 개 받는다면 올바른 주소를 담은 `_replyto` 필드를 추가하세요. 둘 다 없으면 답장은 아무도 읽지 않는 `notifications@ikiform.com`으로 갑니다.

## 이 경우가 다른 점

알림 이메일에는 중요한 주소가 두 개 있습니다. **From**은 보낸 사람이며, 전달률을 위해 Ikiform이어야 합니다. **Reply-To**는 답장이 가는 곳이며, 방문자여야 합니다. 메일 앱은 Reply-To가 있으면 그것을 쓰고, 없으면 From으로 대신합니다. 그러니 할 일은 Ikiform이 POST에서 방문자의 주소를 찾을 수 있게 하는 것뿐입니다.

Ikiform은 먼저 `_replyto` 필드에서, 그다음 이름이 `email`, `email_address`, `your_email`, `reply_to`, `contact_email`인 필드에서 회신 주소를 가져옵니다. 값은 유효한 이메일 주소 하나여야 하며, 아니면 무시됩니다.

다이어그램: Ikiform이 회신 주소를 고르는 방법

1. POST에 유효한 이메일 주소 하나가 담긴 _replyto 필드가 있으면 그것이 회신 주소입니다. 다른 모든 필드보다 우선합니다.
2. 없으면 Ikiform은 POST된 순서대로 필드를 살펴보고, 인식하는 이름에 유효한 주소가 담긴 첫 번째 필드를 씁니다.
3. 둘 다 없으면 이메일에 Reply-To 헤더가 없고, 답장을 누르면 notifications@ikiform.com으로 갑니다.

쉼표, 줄바꿈, 꺾쇠괄호가 포함된 값은 무시되므로 누구도 두 번째 주소나 헤더를 추가할 수 없습니다.

## 동작하는 필드 이름

대소문자를 구분하지 않으므로 `email`뿐 아니라 `Email`과 `EMAIL`도 동작합니다. 흔한 이름별 결과는 다음과 같습니다.

| 필드 이름 | 회신 주소로 사용? | 이유 |
| --- | --- | --- |
| `email`, `Email`, `e-mail` | 예 | 대소문자와 하이픈 유무에 상관없이 기본 이름 |
| `email_address`, `email-address`, `emailAddress` | 예 | 단어 사이에 `_`, `-`를 넣거나 아무것도 넣지 않은 긴 형태 |
| `your_email`, `contact_email`, `reply_to` | 예 | 폼 템플릿에서 흔히 쓰는 이름 |
| `user_email`, `work_email` | 아니요 | Ikiform이 모르는 접두사입니다. 이름을 바꾸거나 `_replyto`를 추가하세요 |
| `Email Address` | 아니요 | 공백은 구분자가 아닙니다. 라벨을 이름으로 쓰는 빌더에서 흔히 생깁니다 |
| `Email 2` | 아니요 | 빌더가 두 번째 이메일 필드에 이런 식으로 번호를 붙입니다 |

## 설정하는 세 가지 방법

아래 폼은 데모 요청 폼으로, 주소가 회사 이메일이고 두 번째 주소와 나란히 있을 수 있습니다. 얼마나 바꿀 수 있는지에 맞는 버전을 고르세요.

**필드 이름 바꾸기** (`demo.html`)

```html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="work-email">Work email</label>
  <input id="work-email" name="email" type="email" autocomplete="work email" required />

  <label for="company">Company</label>
  <input id="company" name="company" autocomplete="organization" />

  <label for="message">What are you trying to solve?</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Request a call</button>
</form>
```

**_replyto로 복사하기** (`demo.html`)

```html
<form id="demo" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="work-email">Work email</label>
  <input id="work-email" name="work_email" type="email" required />

  <label for="referrer-email">Who referred you? (their email)</label>
  <input id="referrer-email" name="referrer_email" type="email" />

  <input type="hidden" name="_replyto" />
  <button>Request a call</button>
</form>

<script>
  const demo = document.getElementById("demo");
  demo.addEventListener("submit", () => {
    demo.elements.namedItem("_replyto").value = demo.elements.namedItem("work_email").value.trim();
  });
</script>
```

**서버에서** (`send.ts`)

```ts
const origin = request.headers.get("origin");
const response = await fetch("https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx", {
  method: "POST",
  headers: {
    Accept: "application/json",
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.IKIFORM_SECRET_KEY}`,
    ...(origin ? { Origin: origin } : {}),
  },
  body: JSON.stringify({
    work_email: values.workEmail,
    referrer_email: values.referrerEmail,
    company: values.company,
    message: values.message,
    _replyto: values.workEmail,
    _gotcha: values.honeypot,
  }),
});
```

- HTML을 직접 관리한다면 **이름을 바꾸세요**. 라벨은 여전히 "Work email"이어도 됩니다. 중요한 것은 `name`뿐이며, `autocomplete="work email"`로 브라우저 자동 완성도 올바르게 유지됩니다.
- 다른 시스템이 `work_email`을 기대하거나 폼에 주소가 두 개 있어 엉뚱한 쪽이 매칭될 수 있다면 **`_replyto`로 복사하세요**. 스크립트가 폼 제출 시 브라우저가 POST하기 전에 숨김 필드를 채웁니다.
- **서버에서** 보낸다면 JSON 본문에 `_replyto`를 추가하세요. 폼 필드일 필요가 전혀 없습니다. 서버 자체의 `fetch`는 `Origin`을 보내지 않고 Ikiform은 무료 `localhost` 테스트를 이것으로 집계하므로, 들어온 요청의 값을 전달합니다.

`_`로 시작하는 필드는 응답으로 저장되지 않으므로 `_replyto`가 이메일에 두 번 표시되지 않습니다. 제출에는 `meta.reply_to`로 보관되며, 웹훅과 [REST API](https://ikiform.com/ko/docs/api.md)에 포함됩니다.

> 복사 스크립트가 실행되지 않으면 `_replyto`가 빈 값으로 POST되고 Ikiform은 이를 무시합니다. `work_email`은 인식하는 이름이 아니므로 그 제출에는 회신 주소가 없습니다. 가능하면 필드 이름을 바꾸세요. 그 방법은 실패할 일이 없습니다.

## 누구에게 답장하는가

회신 주소는 방문자가 입력한 그대로입니다. Ikiform은 올바른 형식의 주소 하나인지만 확인하지, 그 사람의 주소인지는 확인하지 않습니다. 봇이나 장난치는 사람이 다른 사람의 주소를 입력할 수 있고, 그러면 답장이 모르는 사람에게 갑니다.

- 첫 답장은 일반적인 내용으로 하세요. 그 사람이 해당 주소로 답장하기 전까지는 계정 정보, 청구서 등 민감한 내용을 보내지 마세요.
- 일회용 도메인의 주소는 스팸 점수에 2를 더합니다. 동일한 반복 제출 같은 다른 신호가 겹치면 그 POST는 받은편지함에 들어오지 않습니다.
- 주소가 반송되면 오타이거나 가짜입니다. 나머지 내용이 필요하면 제출은 여전히 대시보드에 있습니다.

## 답장에서 방문자가 보는 것

대부분의 메일 앱은 답장하는 메시지를 인용합니다. 여기서는 Ikiform의 알림이므로, 방문자는 자기 답변이 목록으로 정리된 것과 알림의 푸터를 보게 됩니다. 대개 문제없고, 무엇을 물었는지 상기시켜 줍니다. **Send**를 누르기 전에 두 가지만 살펴보세요.

- 푸터에는 여러분을 위한 링크가 있습니다. 멤버용 **View submission**, 외부 수신자용 수신 거부 링크, 악용 신고 주소입니다. 대시보드 링크는 여러분의 워크스페이스에 로그인한 사람에게만 동작하지만, 보내고 싶지 않다면 인용 부분을 지우세요.
- 여러 사람이 알림을 받는다면 각자의 답장이 방문자와 별도의 스레드를 시작합니다. 누가 답할지 정하지 않으면 방문자는 서로 다른 답장을 두 통 받게 됩니다.

알림이 전혀 보이지 않는 답장을 원하나요? **Reply**를 누르는 대신 그 주소로 새 이메일을 쓰세요. 인용된 질문이 사라지므로 답하는 문장을 복사해 두세요.

## 동작 확인하기

1. 페이지에서 폼을 작성해 제출하세요. 여러분의 감사 페이지나 Ikiform의 호스팅 감사 페이지로 이동합니다.
2. 알림을 열고 헤더나 답장 줄을 확인하세요. **Reply-To**에 입력한 주소가 표시됩니다.
3. **Reply**를 누르세요. **To** 줄에는 방문자의 주소가, **From** 줄에는 여러분의 주소가 있습니다.
4. `a@b.c, x@y.z`처럼 형식이 잘못된 주소를 `_replyto`에 넣어 다시 POST하세요. 이메일은 다음 유효한 필드를 회신 주소로 하거나 회신 주소 없이 도착합니다.

## 주의할 점

- **다이제스트에는 회신 주소가 없습니다.** 시간당 50통을 넘으면 폼은 나머지에 대해 다이제스트 한 통을 보내며, 여러 방문자를 다룹니다. 이 경우에는 대시보드에서 답장하세요.
- **전체 답장.** 알림은 수신자마다 따로 가므로 전체 답장은 여러분 자신의 주소만 추가합니다. 팀원은 참조되지 않습니다.
- **Outlook의 답장 규칙.** 일부 회사 메일 환경은 외부 메일의 Reply-To를 다시 쓰거나 무시합니다. **Reply**에 여전히 Ikiform 주소가 보이면 메일 서버 관리자에게 확인하세요.
- **스팸은 아무것도 보내지 않습니다.** 스팸으로 저장된 제출에는 답장할 이메일이 없습니다. 스팸이 아님으로 표시하면 그때 이메일이 발송됩니다.
- **한 필드에 주소 두 개.** `ada@example.com, bob@example.com` 같은 값은 쉼표로 수신자를 몰래 추가할 수 있으므로 회신 주소로 쓰지 않고 무시됩니다. 필드마다 주소 하나를 요청하세요.
- **숨김 입력 이름을 지정할 수 없는 빌더.** 일부 사이트 빌더는 필드 이름을 `_replyto`로 지정할 수 없습니다. 대신 보이는 이메일 필드 이름을 `email`로 바꾸세요. 같은 역할을 합니다.

## 질문

### 서버에서 JSON으로 POST할 때도 회신 주소가 동작하나요?

네. Ikiform은 JSON, urlencoded, multipart POST에서 _replyto와 이메일 이름의 필드를 똑같이 읽습니다. 주소 필드 이름이 다르면 JSON 본문에 _replyto를 추가하세요.

### 답장이 왜 notifications@ikiform.com으로 가나요?

POST에 _replyto 필드도, 인식하는 이메일 이름의 필드도 없었습니다. 이메일 필드 이름을 email, email_address, your_email, reply_to, contact_email 중 하나로 바꾸거나 _replyto를 추가하세요.

### _replyto 필드는 무엇인가요?

알림 이메일의 회신 주소를 설정하는 예약 필드입니다. 유효한 이메일 주소 하나를 담아야 하고, 응답으로 저장되지 않으며, 웹훅과 API에 meta.reply_to로 전달됩니다.

### 폼에 이메일 필드가 두 개 있습니다. 어느 쪽이 쓰이나요?

_replyto를 보내면 그것이 쓰입니다. 그렇지 않으면 POST된 순서에서 이름을 인식하고 값이 유효한 주소인 첫 번째 필드가 쓰입니다. 선택을 명확히 하려면 _replyto를 보내세요.

### From 주소를 제 도메인으로 바꿀 수 있나요?

아니요. 알림은 notifications@ikiform.com에서 발송되며, 덕분에 여러분 쪽에서 DNS를 설정하지 않아도 스팸 검사를 통과합니다. 답장은 여러분의 메일함에서 보내므로 여러분의 주소에서 나갑니다.

## 가이드 더 보기

- [폼을 이메일로 보내기](https://ikiform.com/ko/guides/send-form-to-email.md): 메일 서버 없이 모든 폼 제출을 받은편지함으로 받으세요. mailto:와 PHP mail()이 실패하는 이유와, 스팸을 거르고 바로 답장할 수 있는 설정을 다룹니다.
- [Gmail로](https://ikiform.com/ko/guides/send-form-to-email/gmail.md): mailto: 링크, 앱 비밀번호, Apps Script 없이 Gmail에서 폼 제출을 받고, 라벨을 붙이고, 스팸함을 피하고, Gmail에서 답장하세요.
- [여러 수신자](https://ikiform.com/ko/guides/send-form-to-email/multiple-recipients.md): 폼이 직접 수신자를 고르게 하지 않고도, 폼 하나를 팀 전체에 이메일로 보내거나 주제별로 메시지를 적절한 사람에게 보내세요.
- [PHP 없이](https://ikiform.com/ko/guides/send-form-to-email/without-php.md): mail()을 호출하는 contact.php 스크립트를 호스팅 엔드포인트로 POST하는 폼으로 바꾸세요. 필드 이름, 감사 페이지, 답장은 그대로 유지됩니다.
- [EmailJS 대안](https://ikiform.com/ko/guides/send-form-to-email/emailjs-alternative.md): 문의 폼을 EmailJS에서 옮기세요. 브라우저 측 이메일 키가 위험한 이유, 코드에서 바뀌는 점, 자동 응답처럼 포기하는 기능을 다룹니다.
- [Next.js](https://ikiform.com/ko/guides/send-form-to-email/nextjs.md): Server Action으로 Next.js 폼을 이메일로 보내는 두 가지 방법: Resend나 Nodemailer로 직접 보내기와 폼 백엔드로 전달하기를 솔직하게 비교합니다.
