001/*
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *     http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.commons.mail;
018
019import java.nio.charset.StandardCharsets;
020import java.time.Duration;
021
022/**
023 * Constants used by Email classes.
024 *
025 * A description of the mail session parameter you find at <a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html">
026 * http://java.sun.com/products/javamail/javadocs/com/sun/mail/smtp/package-summary.html</a>.
027 *
028 * @since 1.3
029 */
030public final class EmailConstants {
031
032    /** @deprecated since 1.3, not in use since 1.0 */
033    @Deprecated
034    public static final String SENDER_EMAIL = "sender.email";
035
036    /** @deprecated since 1.3, not in use since 1.0 */
037    @Deprecated
038    public static final String SENDER_NAME = "sender.name";
039
040    /** @deprecated since 1.3, not in use since 1.0 */
041    @Deprecated
042    public static final String RECEIVER_EMAIL = "receiver.email";
043
044    /** @deprecated since 1.3, not in use since 1.0 */
045    @Deprecated
046    public static final String RECEIVER_NAME = "receiver.name";
047
048    /** @deprecated since 1.3, not in use since 1.0 */
049    @Deprecated
050    public static final String EMAIL_SUBJECT = "email.subject";
051
052    /** @deprecated since 1.3, not in use since 1.0 */
053    @Deprecated
054    public static final String EMAIL_BODY = "email.body";
055
056    /** @deprecated since 1.3, not in use since 1.0 */
057    @Deprecated
058    public static final String CONTENT_TYPE = "content.type";
059
060    /** @deprecated since 1.3, not in use since 1.0 */
061    @Deprecated
062    public static final String ATTACHMENTS = "attachments";
063
064    /** @deprecated since 1.3, not in use since 1.0 */
065    @Deprecated
066    public static final String FILE_SERVER = "file.server";
067
068    // Charset constants
069
070    /** Charset constant for koi8-r */
071    public static final String KOI8_R = "koi8-r";
072
073    /** Charset constant for iso-8859-1 */
074    public static final String ISO_8859_1 = StandardCharsets.ISO_8859_1.name();
075
076    /** Charset constant for us-ascii */
077    public static final String US_ASCII = StandardCharsets.US_ASCII.name();
078
079    /** Charset constant for utf-8 */
080    public static final String UTF_8 = StandardCharsets.UTF_8.name();
081
082    /** The debug mode to be used. */
083    public static final String MAIL_DEBUG = "mail.debug";
084
085    /** The host name of the mail server. */
086    public static final String MAIL_HOST = "mail.smtp.host";
087
088    /** The port number of the mail server. */
089    public static final String MAIL_PORT = "mail.smtp.port";
090
091    /** The email address to use for SMTP MAIL command. */
092    public static final String MAIL_SMTP_FROM = "mail.smtp.from";
093
094    /** If set to true, tries to authenticate the user using the AUTH command. */
095    public static final String MAIL_SMTP_AUTH = "mail.smtp.auth";
096
097    /** The SMTP user name. */
098    public static final String MAIL_SMTP_USER = "mail.smtp.user";
099
100    /** The SMTP password. */
101    public static final String MAIL_SMTP_PASSWORD = "mail.smtp.password";
102
103    /** Specifies the default transport protocol */
104    public static final String MAIL_TRANSPORT_PROTOCOL = "mail.transport.protocol";
105
106    /** The value to use SMTP as transport protocol */
107    public static final String SMTP = "smtp";
108
109    /** Defines the text/html content type */
110    public static final String TEXT_HTML = "text/html";
111
112    /** Defines the html subtype */
113    public static final String TEXT_SUBTYPE_HTML = "html";
114
115    /** Defines the text/plain content type */
116    public static final String TEXT_PLAIN = "text/plain";
117
118    /////////////////////////////////////////////////////////////////////////
119    // since 1.1
120    /////////////////////////////////////////////////////////////////////////
121
122    /** @deprecated since 1.3 */
123    @Deprecated
124    public static final String MAIL_TRANSPORT_TLS = "mail.smtp.starttls.enable";
125
126    /**
127     * Indicates if the STARTTLS command shall be used to initiate a TLS-secured connection.
128     *
129     * @since 1.1
130     */
131    public static final String MAIL_TRANSPORT_STARTTLS_ENABLE = "mail.smtp.starttls.enable";
132
133    /**
134     * Whether to use {@link java.net.Socket} as a fallback if the initial connection fails or not.
135     *
136     * @since 1.1
137     */
138    public static final String MAIL_SMTP_SOCKET_FACTORY_FALLBACK = "mail.smtp.socketFactory.fallback";
139
140    /**
141     * Specifies the {@link javax.net.SocketFactory} class to create smtp sockets.
142     *
143     * @since 1.1
144     */
145    public static final String MAIL_SMTP_SOCKET_FACTORY_CLASS = "mail.smtp.socketFactory.class";
146
147    /**
148     * Specifies the port to connect to when using a socket factory.
149     *
150     * @since 1.1
151     */
152    public static final String MAIL_SMTP_SOCKET_FACTORY_PORT = "mail.smtp.socketFactory.port";
153
154    /**
155     * Socket connection timeout value in milliseconds. Default is infinite timeout.
156     *
157     * @since 1.2
158     */
159    public static final String MAIL_SMTP_CONNECTIONTIMEOUT = "mail.smtp.connectiontimeout";
160
161    /**
162     * Socket I/O timeout value in milliseconds. Default is infinite timeout.
163     *
164     * @since 1.2
165     */
166    public static final String MAIL_SMTP_TIMEOUT = "mail.smtp.timeout";
167
168    /**
169     * Default socket timeout.
170     *
171     * @since 1.6.0
172     */
173    public static final Duration SOCKET_TIMEOUT = Duration.ofMinutes(1);
174
175    /**
176     * Default socket timeout.
177     *
178     * @since 1.3
179     * @deprecated Use {@link #SOCKET_TIMEOUT}.
180     */
181    @Deprecated
182    public static final int SOCKET_TIMEOUT_MS = 60_000;
183
184    /**
185     * If true, requires the use of the STARTTLS command. If the server doesn't support the STARTTLS command, the connection will fail.
186     *
187     * @since 1.3
188     */
189    public static final String MAIL_TRANSPORT_STARTTLS_REQUIRED = "mail.smtp.starttls.required";
190
191    /**
192     * If set to true, use SSL to connect and use the SSL port by default.
193     *
194     * @since 1.3
195     */
196    public static final String MAIL_SMTP_SSL_ENABLE = "mail.smtp.ssl.enable";
197
198    /**
199     * If set to true, check the server identity as specified in RFC 2595.
200     *
201     * @since 1.3
202     */
203    public static final String MAIL_SMTP_SSL_CHECKSERVERIDENTITY = "mail.smtp.ssl.checkserveridentity";
204
205    /**
206     * Specifies the {@link javax.net.ssl.SSLSocketFactory} class to use to create SMTP SSL sockets.
207     *
208     * @since 1.3
209     */
210    public static final String MAIL_SMTP_SSL_SOCKET_FACTORY_CLASS = "mail.smtp.ssl.socketFactory.class";
211
212    /**
213     * Specifies the port to connect to when using the SMTP SSL socket factory.
214     *
215     * @since 1.3
216     */
217    public static final String MAIL_SMTP_SSL_SOCKET_FACTORY_PORT = "mail.smtp.ssl.socketFactory.port";
218
219    /////////////////////////////////////////////////////////////////////////
220    // since 1.3.2
221    /////////////////////////////////////////////////////////////////////////
222
223    /**
224     * If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a
225     * SendFailedException. If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address.
226     *
227     * @since 1.3.2
228     */
229    public static final String MAIL_SMTP_SEND_PARTIAL = "mail.smtp.sendpartial";
230
231    /**
232     * If set to true, and a message has some valid and some invalid addresses, send the message anyway, reporting the partial failure with a
233     * SendFailedException. If set to false (the default), the message is not sent to any of the recipients if there is an invalid recipient address.
234     *
235     * @since 1.3.2
236     */
237    public static final String MAIL_SMTPS_SEND_PARTIAL = "mail.smtps.sendpartial";
238
239    /**
240     * Defines the default mime charset to use when none has been specified for the message.
241     *
242     * @since 1.3.2
243     */
244    public static final String MAIL_MIME_CHARSET = "mail.mime.charset";
245
246    /////////////////////////////////////////////////////////////////////////
247    // since 1.4
248    /////////////////////////////////////////////////////////////////////////
249
250    /**
251     * The from email address.
252     *
253     * @since 1.4
254     */
255    public static final String MAIL_FROM = "mail.from";
256
257    /** Hide constructor. */
258    private EmailConstants() {
259        // do nothing
260    }
261
262}