EmailAddress.cs
上传用户:wdhx888
上传日期:2017-06-08
资源大小:112k
文件大小:5k
源码类别:

WEB邮件程序

开发平台:

C#

  1. using System;
  2. using System.Text.RegularExpressions;
  3. namespace EricDaugherty.CSES.Common
  4. {
  5. /// <summary>
  6. /// Stores a single EmailAddress.  The class will only
  7. /// represent valid email addresses, and will never contain
  8. /// an invalid address.
  9. /// </summary>
  10. /// <remarks>
  11. /// This class provides a way to store and pass a valid email address
  12. /// within the system.  This class can not be created with an invalid address,
  13. /// so if parameter of this type is not null, the address can be assumed to
  14. /// be valid.
  15. /// </remarks>
  16. public class EmailAddress
  17. {
  18. #region Constants
  19. private Regex ILLEGAL_CHARACTERS = new Regex( "[][)(@><\",;:]" );
  20. #endregion
  21. #region Variables
  22. private string username;
  23. private string domain;
  24. #endregion
  25. #region Constructors
  26. /// <summary>
  27. /// Creates a new EmailAddress using a valid address.
  28. /// </summary>
  29. /// <exception cref="InvalidEmailAddressException">
  30. /// Thrown if the username or domain is invalid.
  31. /// </exception>
  32. public EmailAddress( string address )
  33. {
  34. Address = address;
  35. }
  36. /// <summary>
  37. /// Creates a new EmailAddress using valid name and domain.
  38. /// </summary>
  39. /// <exception cref="InvalidEmailAddressException">
  40. /// Thrown if the username or domain is invalid.
  41. /// </exception>
  42. public EmailAddress( string username, string domain )
  43. {
  44. Username = username;
  45. Domain = domain;
  46. }
  47. #endregion
  48. #region Properties
  49. /// <summary>
  50. /// The username component of the EmailAddress.  This
  51. /// consists of everything before the @.
  52. /// </summary>
  53. /// <exception cref="InvalidEmailAddressException">
  54. /// Thrown if the username is invalid.
  55. /// </exception>
  56. public string Username
  57. {
  58. get
  59. {
  60. return username;
  61. }
  62. set
  63. {
  64. if( value == null || value.Length == 0 )
  65. {
  66. throw new InvalidEmailAddressException( "Invalid username.  Username must be at least one charecter" );
  67. }
  68. // Verify that the username does not contain illegal characters.
  69. VerifySpecialCharacters( value );
  70. username = value;
  71. }
  72. }
  73. /// <summary>
  74. /// The domain component of the EmailAddress.  This
  75. /// consists of everything after the @.
  76. /// </summary>
  77. /// <exception cref="InvalidEmailAddressException">
  78. /// Thrown if the domain is invalid.
  79. /// </exception>
  80. public string Domain
  81. {
  82. get
  83. {
  84. return domain;
  85. }
  86. set
  87. {
  88. if( value == null || value.Length < 5 )
  89. {
  90. throw new InvalidEmailAddressException( "Invalid domian.  Domain must be at least 5 charecters (a.com, a.edu, etc...)" );
  91. }
  92. // Verify that the username does not contain illegal characters.
  93. VerifySpecialCharacters( value );
  94. domain = value;
  95. }
  96. }
  97. /// <summary>
  98. /// The entire EmailAddress (username@domian)
  99. /// </summary>
  100. /// <exception cref="InvalidEmailAddressException">
  101. /// Thrown if the address is invalid.
  102. /// </exception>
  103. public string Address
  104. {
  105. get
  106. {
  107. return username + "@" + domain;
  108. }
  109. set
  110. {
  111. // Verify it isn't null/empty.
  112. if( value == null || value.Length == 0 )
  113. {
  114. throw new InvalidEmailAddressException( "Invalid address.  Specified address is empty" );
  115. }
  116. String[] addressParts = value.Split( "@".ToCharArray() );
  117. if( addressParts.Length != 2 )
  118. {
  119. throw new InvalidEmailAddressException( "Invalid address.  The address must be formatted as: username@domain." );
  120. }
  121. // Store the individual parts.  These methods will
  122. // verify that the individual parts are valid or will
  123. // throw their own InvalidEmailAddressException
  124. Username = addressParts[0];
  125. Domain = addressParts[1];
  126. }
  127. }
  128. #endregion
  129. #region Object Methods
  130. /// <summary>
  131. /// Returns the email address as: "user@domain.com".;
  132. /// </summary>
  133. /// <returns>Value of Address Property.</returns>
  134. public override string ToString()
  135. {
  136. return Address;
  137. }
  138. #endregion
  139. #region Private Methods
  140. /// <summary>
  141. /// Checks the specified string to verify it does not
  142. /// contain any of the following characters: ( ) &lt; &gt; @ , ; :  " . [ ]  
  143. /// </summary>
  144. /// <param name="data">The string to test</param>
  145. /// <exception cref="InvalidEmailAddressException">
  146. /// Thrown if the data contains any illegal special characters.
  147. /// </exception>
  148. private void VerifySpecialCharacters( String data )
  149. {
  150. if( ILLEGAL_CHARACTERS.IsMatch( data ) ) 
  151. {
  152. throw new InvalidEmailAddressException( "Invalid address.  The username and domain address parts can not contain any of the following characters: ( ) < > @ , ; : \ " . [ ]" );
  153. }
  154. }
  155. #endregion
  156. }
  157. }