Geçici mail
Ruby ile.
Ruby için tek kullanımlık e-posta, sade net/http ile çalışır.
require "net/http"
require "json"
uri = URI("https://evilmail.pro/api/temp-email")
req = Net::HTTP::Post.new(uri)
req["X-API-Key"] = ENV.fetch("EVILMAIL_KEY")
req["Content-Type"] = "application/json"
req.body = { ttlMinutes: 30 }.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(req)
end
data = JSON.parse(res.body).fetch("data")
puts "Inbox: #{data['email']}"
puts "Token: #{data['sessionToken']}"Ruby'de bir geçici e-posta gelen kutusu kurmak, gerçek bir posta kutusu, tarayıcı veya OTP kodlarını elle kopyalayıp yapıştırmadan e-posta doğrulamasını otomatikleştirmenizi sağlar. EvilMail, Ruby'nin standart net/http kütüphanesiyle sürebileceğiniz küçük bir HTTP API sunar: tek kullanımlık bir gelen kutusu oluşturun, mesaj gelene kadar sorgulayın, ardından onay kodunu doğrudan gövdeden regex ile çekin. Test paketleri, CI hatları ve kayıt veya OTP akışları içinde Ruby'de geçici e-postaya ihtiyaç duyan geliştiriciler için tasarlandı — üçüncü taraf gem yok, sahte SDK yok, yalnızca sade istekler ve JSON.
Ruby ile neden geçici mail kullanmalısınız
Uçtan uca kayıt testleri
Canlı bir geçici e-posta adresine sahte bir kullanıcı kaydedin ve hoş geldin ya da onay e-postasının gerçekten geldiğini doğrulayın. Kirletilecek veya temizlenecek ortak bir ekip gelen kutusu yok.
OTP ve 2FA doğrulama testi
Bir giriş veya parola sıfırlama tetikleyin, gelen kutusunu sorgulayın ve 6 haneli kodu tek bir regex ile çekin. Ruby e-posta doğrulama testiniz tamamen gözetimsiz çalışır.
CI/CD hatları
Yalnızca net/http ve bir API anahtarı olduğundan, Ruby'de tek kullanımlık e-posta hem dizüstünüzde hem de GitHub Actions veya GitLab CI'da aynı şekilde çalışır — bakımı yapılacak bir SMTP sunucusu ya da tarayıcı otomasyonu yoktur.
Aktivasyon bağlantılarını çekme
Bir mesajın tam metnini veya HTML'ini alın ve çok adımlı katılım akışlarını programatik olarak tamamlamak için sihirli bağlantıları, davet jetonlarını veya aktivasyon URL'lerini çıkarın.
Akış — 3 çağrıda Ruby geçici mail
Tek kullanımlık bir gelen kutusu oluşturun
require "net/http"
require "json"
# Create a temp inbox that self-destructs after 30 minutes.
def create_inbox
uri = URI("https://evilmail.pro/api/temp-email")
req = Net::HTTP::Post.new(uri)
req["X-API-Key"] = ENV.fetch("EVILMAIL_KEY")
req["Content-Type"] = "application/json"
req.body = { ttlMinutes: 30 }.to_json
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(req)
end
data = JSON.parse(res.body).fetch("data")
[data["email"], data["sessionToken"]]
end
email, token = create_inbox
puts "Waiting for mail at #{email}"E-posta gelene kadar sorgulayın
require "net/http"
require "json"
# Poll the inbox until a message lands (or we give up).
def wait_for_message(token, tries: 20, delay: 3)
uri = URI("https://evilmail.pro/api/temp-email/#{token}")
tries.times do
req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = ENV.fetch("EVILMAIL_KEY")
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(req)
end
msgs = JSON.parse(res.body).dig("data", "messages") || []
return msgs.first unless msgs.empty?
sleep delay # wait before the next attempt
end
raise "No message arrived in time"
end
message = wait_for_message(token)
puts "Got: #{message['subject']} (uid #{message['uid']})"Mesajı okuyun ve kodu çıkarın
require "net/http"
require "json"
# Fetch the full body and pull out a 6-digit OTP.
def extract_code(uid, token)
uri = URI("https://evilmail.pro/api/message/#{uid}?token=#{token}")
req = Net::HTTP::Get.new(uri)
req["X-API-Key"] = ENV.fetch("EVILMAIL_KEY")
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http|
http.request(req)
end
body = JSON.parse(res.body).fetch("data")
# First standalone 6-digit number, from text then html.
body["text"].to_s[/\b(\d{6})\b/, 1] ||
body["html"].to_s[/\b(\d{6})\b/, 1]
end
otp = extract_code(message["uid"], token)
puts "Verification code: #{otp}"Ruby geçici mail — SSS
Q1Ruby'de nasıl geçici e-posta adresi alırım?−
https://evilmail.pro/api/temp-email adresine X-API-Key başlığınız ve {"ttlMinutes": 30} gibi bir JSON gövdesiyle bir POST isteği gönderin. Yanıttaki data.email tek kullanımlık adresinizdir ve data.sessionToken gelen postayı sorgulamak ve okumak için kullandığınız tutamaçtır. Yukarıdaki hero parçacığı tam olarak bunu yaklaşık on iki satırlık net/http ile yapar.
Q2Bunu otomatik test için kullanabilir miyim?+
Evet — birincil kullanım senaryosu budur. Tarayıcı veya SMTP bağımlılığı olmayan sade HTTP olduğundan RSpec, Minitest ya da herhangi bir CI işine sorunsuzca oturur. Bir gelen kutusu oluşturun, test edilecek e-postayı tetikleyin, gelene kadar sorgulayın ve konu, gövde ya da çıkarılan kod üzerinde doğrulama yapın. Bir dizüstünde ve GitHub Actions veya GitLab CI'da tıpatıp aynı çalışır.
Q3OTP'yi nasıl çıkarırım?+
Mesajı GET /api/message/{uid}?token={sessionToken} ile okuyun, ardından data.text (veya data.html) üzerinde bir regex çalıştırın. Standart 6 haneli tek seferlik bir kod /\b(\d{6})\b/ ile eşleşir — ilk eşleşmeyi yakalamak için body["text"].to_s[/\b(\d{6})\b/, 1] kullanın. Sihirli bağlantılar veya jetonlar için URL ya da jeton biçiminize uyan bir kalıba geçin.
Q4API anahtarına / hız sınırlarına ihtiyacım var mı?+
Evet, her istek bir X-API-Key başlığı gerektirir — bunu ENV.fetch("EVILMAIL_KEY") gibi bir ortam değişkeninden okuyun ve asla kaynak koduna sabit olarak yazmayın. İstekler anahtar başına hız sınırlıdır; sorgulama örneği 3 saniyelik bir aralık kullanır ki bu, test ve OTP akışları için sınırların rahatça içinde kalır.
Q5Gelen kutusu ne kadar yaşar?+
Gelen kutusunu oluştururken ttlMinutes ile ömrü siz kontrol edersiniz — örnek 30 dakika kullanır. TTL süresi dolduğunda adres ve mesajları otomatik olarak silinir, yani temizlenecek hiçbir şey kalmaz. Daha uzun süren paketler için daha büyük bir TTL isteyin ya da her test durumu için yeni bir gelen kutusu oluşturun.
Diğer dillerde geçici mail
Tek bir API anahtarı. Ölçekte tek kullanımlık gelen kutuları.
Sınırsız tek kullanımlık adres oluşturun, bunları HTTP üzerinden sorgulayın ve doğrulama kodlarını doğrudan testlerinize ve CI'nıza çekin. Başlaması ücretsiz; özel alan adları ve daha yüksek limitler ücretli planlarda.

