1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.apache.commons.net.smtp;
17
18 import java.util.Enumeration;
19 import java.util.Vector;
20
21 /***
22 * A class used to represent forward and reverse relay paths. The
23 * SMTP MAIL command requires a reverse relay path while the SMTP RCPT
24 * command requires a forward relay path. See RFC 821 for more details.
25 * In general, you will not have to deal with relay paths.
26 * <p>
27 * <p>
28 * @author Daniel F. Savarese
29 * @see SMTPClient
30 ***/
31
32 public final class RelayPath
33 {
34 Vector _path;
35 String _emailAddress;
36
37 /***
38 * Create a relay path with the specified email address as the ultimate
39 * destination.
40 * <p>
41 * @param emailAddress The destination email address.
42 ***/
43 public RelayPath(String emailAddress)
44 {
45 _path = new Vector();
46 _emailAddress = emailAddress;
47 }
48
49 /***
50 * Add a mail relay host to the relay path. Hosts are added left to
51 * right. For example, the following will create the path
52 * <code><b> < @bar.com,@foo.com:foobar@foo.com > </b></code>
53 * <pre>
54 * path = new RelayPath("foobar@foo.com");
55 * path.addRelay("bar.com");
56 * path.addRelay("foo.com");
57 * </pre>
58 * <p>
59 * @param hostname The host to add to the relay path.
60 ***/
61 public void addRelay(String hostname)
62 {
63 _path.addElement(hostname);
64 }
65
66 /***
67 * Return the properly formatted string representation of the relay path.
68 * <p>
69 * @return The properly formatted string representation of the relay path.
70 ***/
71 public String toString()
72 {
73 StringBuffer buffer = new StringBuffer();
74 Enumeration hosts;
75
76 buffer.append('<');
77
78 hosts = _path.elements();
79
80 if (hosts.hasMoreElements())
81 {
82 buffer.append('@');
83 buffer.append((String)hosts.nextElement());
84
85 while (hosts.hasMoreElements())
86 {
87 buffer.append(",@");
88 buffer.append((String)hosts.nextElement());
89 }
90 buffer.append(':');
91 }
92
93 buffer.append(_emailAddress);
94 buffer.append('>');
95
96 return buffer.toString();
97 }
98
99 }