← 블로그

이메일은 '읽음'을 어떻게 알아낼까

2026년 4월 20일

email
engineering

이메일 규격에는 사실 상대가 메일을 읽었다고 공식적으로 알려주는 기능이 있습니다. Disposition-Notification-To라는 헤더를 메일에 붙여 보내면 받는 사람 메일 프로그램이 "읽음 확인을 보낼까요?"라고 물어봅니다. 상대가 동의하면 자동으로 회신이 갑니다. 아웃룩에서 메일 쓸 때 "읽음 확인 요청" 체크박스를 본 적 있다면 바로 그 기능입니다. 그런데 정작 마케팅 메일이나 뉴스레터에서 몇 명이 열어봤는지 알려줄 때 이 공식 기능을 쓰는 곳은 없습니다. 사실상 작동을 안 하기 때문입니다.

표준은 있는데, 다들 무시합니다

이 헤더가 작동하려면 세 단계가 동시에 맞아야 합니다. 보내는 쪽 프로그램이 헤더를 붙일 줄 알아야 하고, 받는 쪽 프로그램이 그 헤더를 보고 "회신할까요?"라고 물어야 하고, 받는 사람이 그 팝업에서 "예"를 눌러야 합니다. 이 중 하나만 어긋나도 끝입니다.

애플 메일은 이 헤더를 아예 무시합니다. 지메일은 개인 계정에서는 지원 자체가 없습니다. 회사용 구글 워크스페이스 계정에서 관리자가 따로 켜줘야만 겨우 작동하는데 그마저 모바일 앱에서는 안 됩니다. 야후는 요청 자체를 메일에서 지워버립니다. 사실상 아웃룩끼리, 그것도 같은 회사 안(마이크로소프트 365, 익스체인지)에서 주고받을 때나 그럭저럭 작동합니다. 그 좁은 조건을 다 통과해도 받는 사람 화면엔 "읽음 확인을 보낼까요?" 팝업이 뜹니다. 상대가 거절하면 그걸로 끝입니다.

공식 규격이 있다고 실제로 쓸 수 있는 건 아닙니다. 그래서 캠페인 발송 도구들은 이 공식 기능을 버리고 훨씬 조잡하지만 실제로 동작하는 방법을 택했습니다.

그래서 다들 눈속임을 씁니다

방법 자체는 이미 아시는 분들도 많을 겁니다. 메일 본문에 1x1 크기 투명 이미지를 심어두는 겁니다. 눈에는 안 보이는 이미지입니다. 메일 프로그램이 화면에 메일을 그리면서 이 이미지를 불러오려고 서버에 요청을 보냅니다. 그 요청을 누군가 이 메일을 열어봤다는 신호로 씁니다. 상대의 동의도, 상대 메일 프로그램의 특별한 지원도 필요 없습니다. 이미지 자동 로드만 꺼져 있지 않으면 됩니다. 다들 아는 이 초라한 방법이 표준 절차를 다 갖춘 공식 규격보다 클라이언트를 가리지 않고 실제로 작동합니다.

링크도 비슷합니다. 메일 안의 버튼이나 텍스트 링크는 실제 목적지 주소가 아니라 일단 서버를 한 번 거치는 주소로 바뀌어 있습니다. 클릭하면 서버가 누가 몇 번째 링크를 눌렀는지 기록한 다음 원래 목적지로 다시 튕겨 보냅니다.

공식 읽음 확인이 통하는 자리도 있습니다. 같은 회사 안, 같은 메일 시스템을 쓰는 사내 메일끼리는 지금도 꽤 신뢰할 만하게 작동합니다. 마케팅 메일은 발신자와 수신자가 서로 다른 회사, 서로 다른 메일 프로그램을 쓰는 게 기본값입니다. 여기서는 그 좁은 조건이 거의 성립하지 않습니다.