EmailAddress.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using DnsClient;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Net;
  5. namespace Masuit.Tools.Models;
  6. public class EmailAddress
  7. {
  8. public string Username { get; set; }
  9. public string Domain { get; set; }
  10. public List<IPAddress> SmtpServers
  11. {
  12. get
  13. {
  14. var nslookup = new LookupClient();
  15. var query = nslookup.Query(Domain, QueryType.MX).Answers.MxRecords().SelectMany(r => Dns.GetHostAddresses(r.Exchange.Value)).ToList();
  16. return query.FindAll(ip => !ip.IsPrivateIP());
  17. }
  18. }
  19. public EmailAddress(string email)
  20. {
  21. var parts = email.Split('@');
  22. Username = parts[0];
  23. Domain = parts[1];
  24. }
  25. /// <summary>
  26. ///
  27. /// </summary>
  28. /// <param name="email"></param>
  29. /// <returns></returns>
  30. public static implicit operator EmailAddress(string email)
  31. {
  32. return new EmailAddress(email);
  33. }
  34. /// <summary>
  35. ///
  36. /// </summary>
  37. /// <param name="email"></param>
  38. public static implicit operator string(EmailAddress email)
  39. {
  40. return email.ToString();
  41. }
  42. /// <summary>Returns a string that represents the current object.</summary>
  43. /// <returns>A string that represents the current object.</returns>
  44. public override string ToString()
  45. {
  46. return Username + "@" + Domain;
  47. }
  48. }