Son Zamanlarda Hotmailbox'tan Aldığımız Mail Adresleri Daha Kullanmadan LOCKED Olduğu İçin Sağlam Mailleri Ve Kilitli Mailleri Çok Hızlı Ayrıştıra Biliceğiniz Bir C# Kaynak Kodunu Aşşağıya Bırakıyorum İhtiyacı Olan Varsa Kullana Bilirdiye

.NET 4.7.2
Multi Thread Bir Kaynaktır Lütfen Fazla Thread Başlatıp IP Adresinizin Outlooktan Ban Yemesine Sebep Olmayın

Sağlamlığını Kontrol Etmek İstediğiniz Mail Adreslerini C:/outlook/deneme.txt ye emailidentity:emailidentitypassword Olarak Yazın EMAİL Adresiyle EmailPasword'unun arasında ":" Olmalı.
Denemelerime Göre Saate 500 İsteği Geçmediğiniz Sürece Microsoft IP Adresinizi Banlamaz.
Sabit Bir IP Adresiniz Varsa Ve Rate Limit'e Takılırsanız Ortalama 72 Saat Boyunca Tekrar İstek Atamazsınız
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Net.Mail;
using System.Threading.Tasks;
using System.Threading;
class Program
{
static async Task Main()
{
string smtpServer = "smtp.office365.com";
int smtpPort = 587;
string emailAddressesFile = @"c:/outlook/deneme.txt";
string successfulEmailsFile = @"c:/outlook/basarili.txt";
string failedEmailsFile = @"c:/outlook/basarisiz.txt";
int numberOfThreads = 1;
int successNumber = 0;
int failureNumber = 0;
Console.Write("Kaç thread kullanmak istersiniz: ");
if (int.TryParse(Console.ReadLine(), out numberOfThreads) == false || numberOfThreads <= 0)
{
Console.WriteLine("Geçersiz sayı. Varsayılan olarak 1 thread kullanılacak.");
numberOfThreads = 1;
}
var emailAccounts = ReadEmailAccounts(emailAddressesFile);
if (emailAccounts.Count == 0)
{
Console.WriteLine("E-posta hesapları dosyası boş.");
Console.WriteLine("Çıkmak için bir tuşa basın.");
Console.ReadKey();
return;
}
var tasks = new Task[numberOfThreads];
int taskCounter = 0;
for (int i = 0; i < numberOfThreads; i++)
{
tasks[i] = Task.Run(async () =>
{
string taskid = (Interlocked.Increment(ref taskCounter)).ToString();
while (emailAccounts.Count > 0)
{
EmailAccount account;
lock (emailAccounts)
{
if (emailAccounts.Count == 0)
break;
account = emailAccounts[0];
emailAccounts.RemoveAt(0);
}
try
{
Console.WriteLine($"Thread {taskid} - Deneniyor: {account.Email}");
using (SmtpClient client = new SmtpClient(smtpServer, smtpPort))
{
client.UseDefaultCredentials = false;
client.Credentials = new NetworkCredential(account.Email, account.Password);
client.EnableSsl = true;
await client.SendMailAsync(new MailMessage(account.Email, account.Email, "denem123e Sub", "deneme Bod123y"));
successNumber++;
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"Thread {taskid} - E-posta check başarılı. Hesap açık: {account.Email} Başarılı İşlem Sayısı : " + successNumber.ToString());
Console.ResetColor();
lock (new object())
{
File.AppendAllText(successfulEmailsFile, $"{account.Email}:{account.Password}\n");
}
}
}
catch (Exception ex)
{
if (ex.Message.IndexOf("account locked") != -1)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"Thread {taskid} - Hata: account locked : {account.Email}");
}
else
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine($"Thread {taskid} - Hata: {ex.Message}");
}
Console.ResetColor();
lock (new object())
{
File.AppendAllText(failedEmailsFile, $"{account.Email}:{account.Password}\n");
}
failureNumber++;
}
}
});
}
await Task.WhenAll(tasks);
Console.WriteLine($"Toplam Başarılı İşlem Sayısı: {successNumber}");
Console.WriteLine($"Toplam Başarısız İşlem Sayısı: {failureNumber}");
Console.WriteLine("Çıkmak için bir tuşa basın.");
Console.ReadKey();
}
static List<EmailAccount> ReadEmailAccounts(string filePath)
{
List<EmailAccount> accounts = new List<EmailAccount>();
try
{
string[] lines = File.ReadAllLines(filePath);
foreach (string line in lines)
{
string[] parts = line.Split(':');
if (parts.Length == 2)
{
string email = parts[0];
string password = parts[1];
accounts.Add(new EmailAccount(email, password));
}
}
}
catch (Exception ex)
{
Console.WriteLine($"Dosya okuma hatası: {ex.Message}");
}
return accounts;
}
}
class EmailAccount
{
public string Email { get; set; }
public string Password { get; set; }
public EmailAccount(string email, string password)
{
Email = email;
Password = password;
}
}