EmailAddress.cs 1.5 KB

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