문서로 건너뛰기
Ruby

설치

gem 하나, 런타임 의존성 없음, Ruby 3.2 이상.

설치

현재 릴리스는 0.0.1입니다. TypeScript SDK의 모든 메서드에 대응하는 메서드가 같은 이름의 snake_case로 있으며, 하나라도 빠지거나 다른 요청을 보내면 gem의 패리티 검사가 빌드를 실패시킵니다.

bundle add openemail
send_email.rb
require "openemail" OpenEmail.init(api_key: ENV.fetch("OPENEMAIL_API_KEY")) email = OpenEmail.emails.send(  from: "Acme Billing <[email protected]>",  to: "[email protected]",  subject: "Your September invoice",  html: "<p>Invoice attached.</p>") puts email[:id], email[:status]

OpenEmail.init은 공유 클라이언트를 한 번 구성하며, 그때부터 모든 파일에서 OpenEmail.emails, OpenEmail.threads를 비롯한 모든 네임스페이스가 그 클라이언트를 사용합니다. 생략하면 첫 호출이 대신 OPENEMAIL_API_KEY로 클라이언트를 구성합니다.

응답은 파싱된 JSON을 Symbol 키를 가진 Hash로 만든 것이므로 email[:id]로 id를 읽습니다. 키는 API의 이름을 그대로 유지하므로, 메서드와 그 옵션은 snake_case인 반면 scheduledAt 같은 필드는 camelCase로 남습니다.

send가 반환되었다고 해서 메시지가 나간 것은 아닙니다. 예약 발송이나 취소 가능한 발송은 queued 또는 scheduled로 돌아온 뒤 나중에 확정됩니다. 호출이 반환되었다는 사실이 아니라 status를 읽으세요.

실행 환경

Ruby 3.2 이상이며, 런타임 의존성은 없습니다. HTTP 클라이언트는 표준 라이브러리의 Net::HTTP이고 keep-alive 연결 풀을 사용하므로, API에 대한 두 번째 요청은 첫 번째 요청이 연 연결을 재사용합니다.

클라이언트 하나를 스레드 간에 안전하게 공유할 수 있으므로 Puma나 Sidekiq 프로세스에는 하나만 있으면 됩니다. Puma의 클러스터 모드, Unicorn, Resque처럼 fork한 뒤에는 자식 프로세스가 부모의 연결을 재사용하지 않고 자신의 연결을 엽니다.

클라이언트는 메일을 보내고 메일함을 읽을 수 있는 워크스페이스 API 키를 들고 있으므로, 서버나 작업, 또는 자신의 컴퓨터에서 실행되는 도구에 두어야 합니다. 키는 Rails.application.credentials나 환경 변수에 보관하고, 절대 코드에 넣지 마세요.