Module: TempmailSdk::Providers::RestmailNet

Defined in:
lib/tempmail_sdk/providers/restmail_net.rb

Overview

restmail-net 渠道 — https://restmail.net Mozilla 开源项目,无需创建邮箱,ad-hoc 模式

Constant Summary collapse

CHANNEL =
"restmail-net"
BASE_URL =
"https://restmail.net"
HEADERS =
{
  "Accept" => "application/json",
  "User-Agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/149.0.0.0 Safari/537.36"
}.freeze

Class Method Summary collapse

Class Method Details

.generate_emailEmailInfo

创建邮箱:随机 username 即可使用,无需请求服务端

Returns:



24
25
26
# File 'lib/tempmail_sdk/providers/restmail_net.rb', line 24

def generate_email
  EmailInfo.new(channel: CHANNEL, email: "#{random_username}@restmail.net")
end

.get_emails(email) ⇒ Array<Email>

Parameters:

  • email (String)

Returns:



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/tempmail_sdk/providers/restmail_net.rb', line 30

def get_emails(email)
  address = email.to_s.strip
  raise "restmail-net: 邮箱地址为空" if address.empty?

  username = address.split("@").first.to_s
  raise "restmail-net: 无法提取用户名" if username.empty?

  resp = Http.get("#{BASE_URL}/mail/#{username}", headers: HEADERS, timeout: 15)
  return [] if resp.status_code == 404

  resp.raise_for_status
  data = resp.json
  return [] unless data.is_a?(Array)

  data.select { |m| m.is_a?(Hash) }.map do |msg|
    from_addr = ""
    if msg["from"].is_a?(Array) && msg["from"][0].is_a?(Hash)
      from_addr = msg["from"][0]["address"].to_s
    end
    from_addr = msg.dig("headers", "from").to_s if from_addr.empty? && msg["headers"].is_a?(Hash)
    Normalize.normalize_email({
                                "id" => msg["id"] || "", "from" => from_addr, "to" => address,
                                "subject" => msg["subject"] || "", "text" => msg["text"] || "",
                                "html" => msg["html"] || "", "date" => msg["receivedAt"] || "",
                                "is_read" => false
                              }, address)
  end
end

.random_usernameObject



17
18
19
20
# File 'lib/tempmail_sdk/providers/restmail_net.rb', line 17

def random_username
  chars = ("a".."z").to_a + ("0".."9").to_a
  Array.new(rand(10..12)) { chars.sample }.join
end