2 // System.Web.Mail.MailAddress.cs
5 // Per Arneng <pt99par@student.bth.se>
11 namespace System.Web.Mail {
13 // Reperesents a mail address
14 internal class MailAddress {
16 protected string user;
17 protected string host;
18 protected string name;
35 public string Address {
36 get { return String.Format( "{0}@{1}" , user , host ); }
39 string[] parts = value.Split( new char[] { '@' } );
41 if( parts.Length != 2 )
42 throw new FormatException( "Invalid e-mail address: '" + value + "'.");
49 public static MailAddress Parse( string str ) {
50 MailAddress addr = new MailAddress();
51 string address = null;
52 string nameString = null;
53 string[] parts = str.Split( new char[] { ' ' } );
55 // find the address: xxx@xx.xxx
56 // and put to gether all the parts
57 // before the address as nameString
58 foreach( string part in parts ) {
60 if( part.IndexOf( '@' ) > 0 ) {
65 nameString = nameString + part + " ";
69 throw new FormatException( "Invalid e-mail address: '" + str + "'.");
71 address = address.Trim( new char[] { '<' , '>' , '(' , ')' } );
73 addr.Address = address;
75 if( nameString != null ) {
76 addr.Name = nameString.Trim();
77 addr.Name = ( addr.Name.Length == 0 ? null : addr.Name );
85 public override string ToString() {
87 string retString = "";
91 retString = String.Format( "<{0}>" , this.Address );
95 string personName = this.Name;
97 if( MailUtil.NeedEncoding( personName ) ) {
98 personName = String.Format( "=?{0}?B?{1}?=",
100 MailUtil.Base64Encode( personName ) ) ;
103 retString = String.Format( "\"{0}\" <{1}>" , personName , this.Address);