Module: TempmailSdk::Providers::Harakirimail
- Defined in:
- lib/tempmail_sdk/providers/harakirimail.rb
Overview
harakirimail.com 渠道实现 无需认证、无需 Cookie、无需 Token 的简单 REST API
Constant Summary collapse
- CHANNEL =
"harakirimail"- BASE =
"https://harakirimail.com"- HEADERS =
{ "Accept" => "application/json, text/plain, */*", "Accept-Language" => "zh-CN,zh;q=0.9,en;q=0.8", "User-Agent" => "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " \ "(KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0" }.freeze
Class Method Summary collapse
-
.fetch_body(email_id) ⇒ Object
获取单封邮件正文.
- .generate_email ⇒ EmailInfo
- .get_emails(email) ⇒ Array<Email>
- .random_name(length = 12) ⇒ Object
Class Method Details
.fetch_body(email_id) ⇒ Object
获取单封邮件正文
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/tempmail_sdk/providers/harakirimail.rb', line 37 def fetch_body(email_id) return {} if email_id.to_s.empty? begin resp = Http.get("#{BASE}/api/v1/email/#{email_id}", headers: HEADERS, timeout: 15) resp.raise_for_status data = resp.json data.is_a?(Hash) ? data : {} rescue StandardError {} end end |
.generate_email ⇒ EmailInfo
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/tempmail_sdk/providers/harakirimail.rb', line 25 def generate_email name = random_name email = "#{name}@harakirimail.com" # 调用收件箱接口验证地址可用 resp = Http.get("#{BASE}/api/v1/inbox/#{name}", headers: HEADERS, timeout: 15) resp.raise_for_status EmailInfo.new(channel: CHANNEL, email: email) end |
.get_emails(email) ⇒ Array<Email>
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/tempmail_sdk/providers/harakirimail.rb', line 52 def get_emails(email) e = email.to_s.strip raise "harakirimail: empty email" if e.empty? name = e.include?("@") ? e.split("@").first.to_s : e resp = Http.get("#{BASE}/api/v1/inbox/#{name}", headers: HEADERS, timeout: 15) resp.raise_for_status data = resp.json return [] unless data.is_a?(Hash) rows = data["emails"] return [] unless rows.is_a?(Array) rows.select { |r| r.is_a?(Hash) }.map do |raw| email_id = raw["_id"].to_s detail = fetch_body(email_id) flat = { "id" => email_id, "from" => raw["from"].to_s, "to" => e, "subject" => raw["subject"].to_s, "date" => raw["received"].to_s, "html" => (detail["body_html"] || detail["html"]).to_s, "text" => (detail["body_text"] || detail["text"]).to_s, "isRead" => false } Normalize.normalize_email(flat, e) end end |
.random_name(length = 12) ⇒ Object
19 20 21 22 |
# File 'lib/tempmail_sdk/providers/harakirimail.rb', line 19 def random_name(length = 12) chars = ("a".."z").to_a + ("0".."9").to_a Array.new(length) { chars.sample }.join end |