Geçici mail
C# ile.
Tek kullanımlık gelen kutuları oluşturun ve OTP kodlarını doğrudan C# içinden alın.
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
var http = new HttpClient { BaseAddress = new Uri("https://evilmail.pro") };
http.DefaultRequestHeaders.Add(
"X-API-Key", Environment.GetEnvironmentVariable("EVILMAIL_KEY"));
// Create an inbox that self-destructs after 30 minutes.
var res = await http.PostAsJsonAsync("/api/temp-email", new { ttlMinutes = 30 });
res.EnsureSuccessStatusCode();
using var doc = await res.Content.ReadFromJsonAsync<JsonDocument>();
var data = doc!.RootElement.GetProperty("data");
Console.WriteLine(data.GetProperty("email").GetString());C# ile geçici mail entegrasyonu yalnızca birkaç satır HttpClient ve System.Text.Json ile hallolur — SMTP sunucusu yok, posta kutusu kurulumu yok, sahte SDK'lar yok. EvilMail, herhangi bir .NET uygulamasından çağırabileceğiniz gerçek bir tek kullanımlık e-posta API'si sunar: tek kullanımlık bir gelen kutusu oluşturun, mesaj ulaşana kadar sorgulayın, ardından gövdeden doğrulama kodunu regex ile çekip alın. En zorlayan test senaryoları için tasarlandı — uçtan uca kayıt akışları, OTP ve e-posta doğrulama kontrolleri ve bir insanın hiç e-posta istemcisi açmadan her çalıştırmada taze bir posta kutusu isteyen CI pipeline'ları.
C# ile neden geçici mail kullanmalısınız
Otomatik kayıt & E2E testleri
Her test çalıştırması için taze bir tek kullanımlık gelen kutusu sağlayın; böylece kayıt akışları yeniden kullanılan bir adreste asla çakışmaz. Karşılama veya onay e-postasını doğrulayan xUnit, NUnit ya da Playwright paketleri için mükemmel.
OTP & e-posta doğrulama kontrolleri
Gelen kutusunu sorgulayın, mesajı okuyun ve 6 haneli kodu tek bir regex ile çekin. Testiniz, tıpkı gerçek bir kullanıcı gibi, e-posta doğrulama adımını uçtan uca tamamlayabilir.
CI/CD pipeline'ları
API anahtarını bir ortam değişkeninden okuyun ve GitHub Actions, Azure Pipelines ya da herhangi bir runner içinde talep üzerine geçici e-postalar üretin — temizlenecek veya rate-limit yiyecek paylaşımlı bir test posta kutusu yok.
Scraping & tek kullanımlık kayıtlar
Bir .NET aracı bir kaynağın kilidini açmak için tek seferlik bir adrese ihtiyaç duyduğunda, belirli bir TTL sonrası kendini imha eden ve gerçek alan adınıza asla dokunmayan bir geçici mail gelen kutusu oluşturun.
Akış — 3 çağrıda C# geçici mail
Tek kullanımlık gelen kutusu oluşturun
using System.Net.Http;
using System.Net.Http.Json;
using System.Text.Json;
var http = new HttpClient { BaseAddress = new Uri("https://evilmail.pro") };
http.DefaultRequestHeaders.Add(
"X-API-Key", Environment.GetEnvironmentVariable("EVILMAIL_KEY"));
// Ask for an inbox with a 30-minute time-to-live.
var res = await http.PostAsJsonAsync(
"/api/temp-email", new { ttlMinutes = 30 });
res.EnsureSuccessStatusCode();
using var doc = await res.Content.ReadFromJsonAsync<JsonDocument>();
var data = doc!.RootElement.GetProperty("data");
string email = data.GetProperty("email").GetString()!;
string token = data.GetProperty("sessionToken").GetString()!;
Console.WriteLine($"Inbox: {email}");
Console.WriteLine($"Token: {token}");E-posta gelene kadar sorgulayın
// Reuse `http` and `token` from step 1.
// Check the inbox up to 20 times, 3s apart.
int uid = -1;
for (int i = 0; i < 20; i++)
{
var res = await http.GetAsync($"/api/temp-email/{token}");
res.EnsureSuccessStatusCode();
using var doc = await res.Content.ReadFromJsonAsync<JsonDocument>();
var messages = doc!.RootElement
.GetProperty("data").GetProperty("messages");
if (messages.GetArrayLength() > 0)
{
uid = messages[0].GetProperty("uid").GetInt32();
Console.WriteLine($"Got message uid={uid}");
break;
}
Console.WriteLine("No mail yet, retrying...");
await Task.Delay(TimeSpan.FromSeconds(3));
}
if (uid < 0)
throw new TimeoutException("No email arrived in time.");Mesajı okuyun & kodu çıkarın
using System.Text.RegularExpressions;
// Fetch the full message body by its uid (reuse `http`, `uid`, `token`).
var res = await http.GetAsync(
$"/api/message/{uid}?token={token}");
res.EnsureSuccessStatusCode();
using var doc = await res.Content.ReadFromJsonAsync<JsonDocument>();
var data = doc!.RootElement.GetProperty("data");
string text = data.GetProperty("text").GetString() ?? "";
// Pull the first 6-digit code out of the body.
var match = Regex.Match(text, @"\b(\d{6})\b");
if (match.Success)
Console.WriteLine($"OTP: {match.Groups[1].Value}");
else
Console.WriteLine("No 6-digit code found.");C# geçici mail — SSS
Q1C# ile nasıl geçici bir mail adresi alırım?−
X-API-Key başlığınız ve {"ttlMinutes": 30} gibi bir JSON gövdesiyle https://evilmail.pro/api/temp-email adresine bir POST isteği gönderin. Yanıttaki data.email tek kullanımlık adresinizdir ve data.sessionToken gelen kutusunu okumak için kullandığınız tanıtıcıdır. HttpClient ve System.Text.Json ile yaklaşık on satır — yukarıdaki hero örneğine bakın.
Q2Bunu otomatik testler için kullanabilir miyim?+
Evet — birincil kullanım senaryosu bu. Her testin başında taze bir gelen kutusu oluşturun, uygulamanızın e-postasını tetikleyin, ardından bir mesaj görünene kadar GET /api/temp-email/{sessionToken} adresini sorgulayın. xUnit, NUnit ya da Playwright/.NET E2E paketlerine sorunsuzca oturur ve anahtar bir ortam değişkeninden geldiği için CI'da gözetimsiz çalışır.
Q3OTP'yi e-postadan nasıl çıkarırım?+
Mesajı GET /api/message/{uid}?token={sessionToken} ile alın, data.text (ya da data.html) değerini kullanın ve bir regex çalıştırın. Standart 6 haneli tek kullanımlık bir kod için Regex.Match(text, @"\b(\d{6})\b") kodu 1. grupta döndürür. Sağlayıcınız farklı bir uzunluk ya da bir bağlantı içinde token kullanıyorsa deseni ayarlayın.
Q4API anahtarına ihtiyacım var mı ve rate limit'ler var mı?+
Evet, her istek X-API-Key başlığını içermelidir — bunu EVILMAIL_KEY gibi bir ortam değişkeninden okuyun ve asla kaynak koda gömmeyin. İstekler anahtar başına rate-limit'e tabidir; bu yüzden sorgulamayı sıkı döngüler yerine makul aralıklarda tutun (gösterildiği gibi yaklaşık 3 saniyede bir, ~20 deneme). Planınızın tam kotası için EvilMail panelinizi kontrol edin.
Q5Gelen kutusu ne kadar süre yaşar?+
Gelen kutusunu oluştururken ttlMinutes alanıyla bunu siz kontrol edersiniz — yarım saat için 30 olarak ayarlayın ya da hızlı tek seferlik doğrulamalar için daha kısa tutun. TTL sona erdiğinde adres ve mesajları yok edilir; bu yüzden mesajınızı pencere kapanmadan önce alıp okuyun.
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.

