tempmail-sdk-ruby

License: GPL v3

Ruby 语言临时邮箱 SDK,公开 279channel 渠道标识,聚合 100+ 个第三方临时邮箱服务商,所有渠道返回统一标准化格式。渠道标识与顺序与 Go / npm / Rust / Python / C 等其余各端保持一致(十端同步);随机生成邮箱时在本端独立打乱尝试顺序。

安装

需 Ruby 3.0+。

gem install tempmail_sdk

或在 Gemfile 中添加:

gem "tempmail_sdk", "~> 1.0"

快速开始

使用 Client(推荐)

TempEmailClient 自动管理 EmailInfo 与内部 token,用户无需手动传递。

require "tempmail_sdk"

client = TempmailSdk::TempEmailClient.new

# 创建临时邮箱(指定渠道,不指定则随机 fallback)
info = client.generate(TempmailSdk::GenerateEmailOptions.new(channel: "tempmail"))
puts "渠道: #{info.channel}"
puts "邮箱: #{info.email}"

# 获取邮件(Token 等由 SDK 内部自动维护)
result = client.get_emails
puts "收到 #{result.emails.size} 封邮件"

result.emails.each do |email|
  puts "发件人: #{email.from_addr}"
  puts "主题: #{email.subject}"
  puts "内容: #{email.text}"
  puts "时间: #{email.date}"
  puts "已读: #{email.is_read}"
  puts "附件: #{email.attachments.size}"
end

使用函数式 API

require "tempmail_sdk"

# 列出所有渠道
TempmailSdk.list_channels.each do |ch|
  puts "渠道: #{ch.channel}, 名称: #{ch.name}, 网站: #{ch.website}"
end

# 从随机渠道创建邮箱
info = TempmailSdk.generate_email

# 从指定渠道创建邮箱
info2 = TempmailSdk.generate_email(TempmailSdk::GenerateEmailOptions.new(channel: "mail-tm"))

# 自定义有效期(仅 tempmail 渠道,单位分钟)
info3 = TempmailSdk.generate_email(
  TempmailSdk::GenerateEmailOptions.new(channel: "tempmail", duration: 60)
)

# 获取邮件列表
result = TempmailSdk.get_emails(info)

提示: Token 等认证信息由 SDK 内部自动维护,用户无需关心。

标准化邮件格式

所有渠道返回的邮件均映射为统一的 Email 对象:

属性 类型 说明
id String 邮件唯一标识
from_addr String 发件人地址
to String 收件人地址
subject String 邮件主题
text String 纯文本内容
html String HTML 内容
date String ISO 8601 格式日期
is_read Boolean 是否已读
attachments Array<EmailAttachment> 附件列表

配置

支持通过环境变量零代码配置,作用于所有 HTTP 请求:

变量 说明
TEMPMAIL_PROXY HTTP/SOCKS5 代理 URL
TEMPMAIL_TIMEOUT 超时秒数(默认 15)
TEMPMAIL_INSECURE 1/true 跳过 TLS 验证
TEMPMAIL_TELEMETRY_ENABLED false/0/no 关闭匿名遥测
TEMPMAIL_TELEMETRY_URL 自定义遥测上报端点
DROPMAIL_AUTH_TOKEN DropMail GraphQL af_ 令牌
APIHZ_ID / APIHZ_KEY apihz(接口盒子)渠道凭据,默认使用公共账号

也可通过代码设置:

TempmailSdk.set_config(proxy: "http://127.0.0.1:7890", timeout: 30, insecure: true)

许可证

GPL-3.0