panda.net.smtp.RelayPath Maven / Gradle / Ivy
package panda.net.smtp;
import java.util.Enumeration;
import java.util.Vector;
/***
* A class used to represent forward and reverse relay paths. The SMTP MAIL command requires a
* reverse relay path while the SMTP RCPT command requires a forward relay path. See RFC 821 for
* more details. In general, you will not have to deal with relay paths.
*
* @see SMTPClient
***/
public final class RelayPath {
Vector _path;
String _emailAddress;
/***
* Create a relay path with the specified email address as the ultimate destination.
*
*
* @param emailAddress The destination email address.
***/
public RelayPath(String emailAddress) {
_path = new Vector();
_emailAddress = emailAddress;
}
/***
* Add a mail relay host to the relay path. Hosts are added left to right. For example, the
* following will create the path
* < @bar.com,@foo.com:[email protected] >
*
*
* path = new RelayPath("[email protected]");
* path.addRelay("bar.com");
* path.addRelay("foo.com");
*
*
*
* @param hostname The host to add to the relay path.
***/
public void addRelay(String hostname) {
_path.addElement(hostname);
}
/***
* Return the properly formatted string representation of the relay path.
*
*
* @return The properly formatted string representation of the relay path.
***/
@Override
public String toString() {
StringBuilder buffer = new StringBuilder();
Enumeration hosts;
buffer.append('<');
hosts = _path.elements();
if (hosts.hasMoreElements()) {
buffer.append('@');
buffer.append(hosts.nextElement());
while (hosts.hasMoreElements()) {
buffer.append(",@");
buffer.append(hosts.nextElement());
}
buffer.append(':');
}
buffer.append(_emailAddress);
buffer.append('>');
return buffer.toString();
}
}