X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;ds=sidebyside;f=src%2Forg%2Fibex%2Fmail%2FAddress.java;fp=src%2Forg%2Fibex%2Fmail%2FAddress.java;h=92bdbc89e2cfe18ac708d9a8879ceec7f5b93052;hb=3492f56637223c93d748aef93888bc107e8e1252;hp=0000000000000000000000000000000000000000;hpb=9f0c3edcacb11544739b338c52afbc6efaaee5c0;p=org.ibex.mail.git diff --git a/src/org/ibex/mail/Address.java b/src/org/ibex/mail/Address.java new file mode 100644 index 0000000..92bdbc8 --- /dev/null +++ b/src/org/ibex/mail/Address.java @@ -0,0 +1,31 @@ +package org.ibex.mail; +import org.ibex.crypto.*; +import org.ibex.js.*; +import org.ibex.util.*; +import org.ibex.mail.protocol.*; +import java.util.*; +import java.net.*; +import java.io.*; + +public class Address extends JSReflection { + public final String user; + public final String host; + public final String description; + public Address(String user, String host, String description) {this.user=user;this.host=host;this.description=description;} + public Address(String s) throws Address.Malformed { + s = s.trim(); + if (s.indexOf('<') != -1) { + if (s.indexOf('>') == -1) { throw new Malformed("found open-angle-bracket (<) but not close-angle-bracket (>)"); } + description = s.substring(0, s.indexOf('<')) + s.substring(s.indexOf('>') + 1); + s = s.substring(s.indexOf('<') + 1, s.indexOf('>')); + } else { + description = ""; + } + if (s.indexOf('@') == -1) { throw new Malformed("no @-sign in email address"); } + user = s.substring(0, s.indexOf('@')); + host = s.substring(s.indexOf('@')+1); + } + public String coerceToString() { return toString(); } + public String toString() { return description.equals("") ? (user +"@"+ host) : description+" <" + user +"@"+ host + ">"; } + public static class Malformed extends MailException.Malformed { public Malformed(String s) { super(s); } } +}