using System; using System.Collections.Generic; using System.Data.SqlClient; using System.Linq; using System.Net; using System.Net.Mail; using Microsoft.EntityFrameworkCore; public class User { public int Id { get; set; } public string Surname { get; set; } public string Name { get; set; } public string Email { get; set; } public string VerificationToken { get; set; } } public class ApplicationDbContext : DbContext { public DbSet Users { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { optionsBuilder.UseSqlServer("Data Source=(localdb)\\MSSQLLocalDB;Initial Catalog=ADUser;Integrated Security=True;"); } } public class UserRepository { public List GetUsers() { using (var dbContext = new ApplicationDbContext()) { return dbContext.Users.ToList(); } } public void AddUser(User user) { using (var dbContext = new ApplicationDbContext()) { dbContext.Users.Add(user); dbContext.SaveChanges(); } } public void UpdateUser(User user) { using (var dbContext = new ApplicationDbContext()) { dbContext.Users.Update(user); dbContext.SaveChanges(); } } } public class EmailService { private string smtpServer = "smtp.office365.com"; private int smtpPort = 587; private string senderPassword = "*****"; private string senderEmail = "******"; public List SendEmail { get; private set; } public EmailService() { SendEmail = new List(); } public void SendVerificationEmail(User user, string subject) { string verificationLink = GenerateVerificationLink(user.Id, user.VerificationToken); string body = $@"

Merhaba {user.Name} {user.Surname},

E-posta adresiniz hala aktif kayıtlarımızda görünmekte ve hesabınızı sorunsuz bir şekilde kullanabilmeniz için doğrulama işlemi gerekmektedir.

E-posta iletişimlerinizde herhangi bir kesinti yaşamamak için, lütfen aşağıdaki bağlantıya tıklayarak e-posta adresinizi doğrulayınız:

Eğer e-posta adresinizi doğrulamazsanız, hesabınıza ilişkin e-posta iletişimleri zamanla kesilebilir ve bu da hesabınıza erişimde sorunlar yaşamanıza neden olabilir.

Herhangi bir yardıma ihtiyacınız varsa veya başka bir konuda sorularınız varsa, bizimle iletişime geçmekten çekinmeyin. Size yardımcı olmaktan mutluluk duyarız.

Saygılarımızla,

Bilgi Teknolojileri Müdürlüğü

Trakya Elektrik Perakande Satış A.Ş.

E-posta Telefon Web Paylaşmak
"; using (SmtpClient smtpClient = new SmtpClient(smtpServer, smtpPort)) { smtpClient.Credentials = new NetworkCredential(senderEmail, senderPassword); smtpClient.EnableSsl = true; try { MailMessage email = new MailMessage(senderEmail, user.Email, subject, body); email.IsBodyHtml = true; SendEmail.Add(user.Email); smtpClient.Send(email); Console.WriteLine($"E-posta başarıyla gönderildi: {user.Email}"); } catch (Exception ex) { Console.WriteLine($"E-posta gönderirken bir hata oluştu: {ex.Message}"); } } } private string GenerateVerificationLink(int userId, string token) { string verificationLink = $"https://trepas.com.tr/verify?userId={userId}&token={token}"; return verificationLink; } } public class Program { public static void Main() { UserRepository userRepository = new UserRepository(); List users = userRepository.GetUsers(); EmailService emailService = new EmailService(); foreach (User user in users) { string token = GenerateVerificationToken(); user.VerificationToken = token; userRepository.UpdateUser(user); emailService.SendVerificationEmail(user, "Doğrulama E-postası"); } Console.WriteLine("E-posta gönderilen hesaplar:"); foreach (var email in emailService.SendEmail) { Console.WriteLine(email); } Console.ReadLine(); } private static string GenerateVerificationToken() { var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(); var token = new string(Enumerable.Repeat(chars, 16) .Select(s => s[random.Next(s.Length)]).ToArray()); return token; } }