상용 이메일 편집 도구들은 예측 가능한 월별 반복 수익(MRR)을 위해 과도하게 복잡한 기능과 높은 구독료를 요구하며, 이는 단발성 또는 소규모 HTML 이메일 전송을 원하는 사용자에게는 비효율적입니다. 이메일 클라이언트(Gmail, Apple Mail)의 기본 서식 도구는 제한적이며, ActionMailer나 React Email과 같은 웹 프레임워크 기반 솔루션 또한 단순한 이메일 전송을 위해 전체 애플리케이션 환경을 설정해야 하는 부담이 있습니다. 저자는 이러한 문제에 대한 대안으로 UNIX 철학에 기반한, 즉 HTML과 애셋을 입력받아 ‘이메일스러운 것’을 출력하거나 SMTP를 통해 전송하는 간단한 도구의 필요성을 강조합니다.
이러한 도구는 Ruby 환경에서 Premailer(CSS 인라인화), Nokogiri(HTML 파싱 및 이미지 경로 재작성), Mail gem(MIME 메시지 구성 및 전송)을 조합하여 구현될 수 있습니다. 본문은 bundler/inline
을 사용하여 필요한 gem들을 스크립트 내에서 즉시 로드하는 방법을 소개하고, HTML 이메일을 읽어 파싱한 후 MIME multipart 메시지로 변환하는 구체적인 Ruby 코드 예시를 제공합니다. 특히, multipart/related
구조를 활용하여 이미지를 첨부 파일로 표시하지 않고 HTML 본문에 인라인으로 포함시키는 ingest_and_rewrite_images
함수 구현이 상세히 설명됩니다. 이 함수는 이미지의 src
속성을 cid:
스키마를 사용하는 Content-ID URL로 변경하여 이메일 클라이언트가 이미지를 올바르게 렌더링하도록 합니다. 최종적으로 생성된 이메일은 .eml
파일로 저장되어 macOS의 Mail.app에서 즉시 미리볼 수 있으며, Mail.defaults
설정을 통해 SMTP를 통한 실제 이메일 전송도 가능합니다. 저자는 스팸 방지를 위한 Bcc 사용, 수신 사유 명시, 수신 거부 방법 제공 등 이메일 전송 시 법적, 윤리적 고려사항도 덧붙입니다.