All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.james.protocols.smtp.MailAddress Maven / Gradle / Ivy

There is a newer version: 3.8.1
Show newest version
/****************************************************************
 * Licensed to the Apache Software Foundation (ASF) under one   *
 * or more contributor license agreements.  See the NOTICE file *
 * distributed with this work for additional information        *
 * regarding copyright ownership.  The ASF licenses this file   *
 * to you under the Apache License, Version 2.0 (the            *
 * "License"); you may not use this file except in compliance   *
 * with the License.  You may obtain a copy of the License at   *
 *                                                              *
 *   http://www.apache.org/licenses/LICENSE-2.0                 *
 *                                                              *
 * Unless required by applicable law or agreed to in writing,   *
 * software distributed under the License is distributed on an  *
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
 * KIND, either express or implied.  See the License for the    *
 * specific language governing permissions and limitations      *
 * under the License.                                           *
 ****************************************************************/

package org.apache.james.protocols.smtp;

import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;

/**
 * A representation of an email address.
 * 
 * 

This class encapsulates functionality to access different * parts of an email address without dealing with its parsing.

* *

A MailAddress is an address specified in the MAIL FROM and * RCPT TO commands in SMTP sessions. These are either passed by * an external server to the mailet-compliant SMTP server, or they * are created programmatically by the mailet-compliant server to * send to another (external) SMTP server. Mailets and matchers * use the MailAddress for the purpose of evaluating the sender * and recipient(s) of a message.

* *

MailAddress parses an email address as defined in RFC 821 * (SMTP) p. 30 and 31 where addresses are defined in BNF convention. * As the mailet API does not support the aged "SMTP-relayed mail" * addressing protocol, this leaves all addresses to be a {@code }, * as per the spec. * *

This class is a good way to validate email addresses as there are * some valid addresses which would fail with a simpler approach * to parsing address. It also removes the parsing burden from * mailets and matchers that might not realize the flexibility of an * SMTP address. For instance, "serge@home"@lokitech.com is a valid * SMTP address (the quoted text serge@home is the local-part and * lokitech.com is the domain). This means all current parsing to date * is incorrect as we just find the first '@' and use that to separate * local-part from domain.

* *

This parses an address as per the BNF specification for * from RFC 821 on page 30 and 31, section 4.1.2. COMMAND SYNTAX. * http://www.freesoft.org/CIE/RFC/821/15.htm

* * This version is copied from mailet-api with a few changes to not make it depend on javamail * * @Deprecated Use james-core {@link org.apache.james.core.MailAddress} instead. */ @Deprecated public class MailAddress extends org.apache.james.core.MailAddress { public MailAddress(String address) throws AddressException { super(address); } public MailAddress(String localPart, String domain) throws AddressException { super(localPart, domain); } public MailAddress(InternetAddress address) throws AddressException { super(address); } public MailAddress(org.apache.james.core.MailAddress address) throws AddressException { super(address.asString()); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy