aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
diff options
context:
space:
mode:
Diffstat (limited to 'framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java')
-rw-r--r--framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java634
1 files changed, 0 insertions, 634 deletions
diff --git a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java b/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
deleted file mode 100644
index 0a5bc681..00000000
--- a/framework/src/ant/apache-ant-1.9.6/src/main/org/apache/tools/ant/taskdefs/email/EmailTask.java
+++ /dev/null
@@ -1,634 +0,0 @@
-/*
- * 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.tools.ant.taskdefs.email;
-
-import java.io.File;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import org.apache.tools.ant.BuildException;
-import org.apache.tools.ant.Project;
-import org.apache.tools.ant.Task;
-import org.apache.tools.ant.types.EnumeratedAttribute;
-import org.apache.tools.ant.types.FileSet;
-import org.apache.tools.ant.types.Path;
-import org.apache.tools.ant.types.Resource;
-import org.apache.tools.ant.types.resources.FileProvider;
-import org.apache.tools.ant.types.resources.FileResource;
-import org.apache.tools.ant.util.ClasspathUtils;
-
-/**
- * A task to send SMTP email. This is a refactoring of the SendMail and
- * MimeMail tasks such that both are within a single task.
- *
- * @since Ant 1.5
- * @ant.task name="mail" category="network"
- */
-public class EmailTask extends Task {
- private static final int SMTP_PORT = 25;
-
- /** Constant to show that the best available mailer should be used. */
- public static final String AUTO = "auto";
- /** Constant to allow the Mime mailer to be requested */
- public static final String MIME = "mime";
- /** Constant to allow the UU mailer to be requested */
- public static final String UU = "uu";
- /** Constant to allow the plaintext mailer to be requested */
- public static final String PLAIN = "plain";
-
- /**
- * Enumerates the encoding constants.
- */
- public static class Encoding extends EnumeratedAttribute {
- /**
- * finds the valid encoding values
- *
- * @return a list of valid entries
- */
- public String[] getValues() {
- return new String[] {AUTO, MIME, UU, PLAIN};
- }
- }
-
- private String encoding = AUTO;
- /** host running SMTP */
- private String host = "localhost";
- private Integer port = null;
- /** subject field */
- private String subject = null;
- /** any text */
- private Message message = null;
- /** failure flag */
- private boolean failOnError = true;
- private boolean includeFileNames = false;
- private String messageMimeType = null;
- private String messageFileInputEncoding;
- /* special headers */
- /** sender */
- private EmailAddress from = null;
- /** replyto */
- private Vector replyToList = new Vector();
- /** TO recipients */
- private Vector toList = new Vector();
- /** CC (Carbon Copy) recipients */
- private Vector ccList = new Vector();
- /** BCC (Blind Carbon Copy) recipients */
- private Vector bccList = new Vector();
-
- /** generic headers */
- private Vector headers = new Vector();
-
- /** file list */
- private Path attachments = null;
- /** Character set for MimeMailer*/
- private String charset = null;
- /** User for SMTP auth */
- private String user = null;
- /** Password for SMTP auth */
- private String password = null;
- /** indicate if the user wishes SSL-TLS */
- private boolean ssl = false;
- /** indicate if the user wishes support for STARTTLS */
- private boolean starttls = false;
-
- /** ignore invalid recipients? */
- private boolean ignoreInvalidRecipients = false;
-
- /**
- * Set the user for SMTP auth; this requires JavaMail.
- * @param user the String username.
- * @since Ant 1.6
- */
- public void setUser(String user) {
- this.user = user;
- }
-
- /**
- * Set the password for SMTP auth; this requires JavaMail.
- * @param password the String password.
- * @since Ant 1.6
- */
- public void setPassword(String password) {
- this.password = password;
- }
-
- /**
- * Set whether to send data over SSL.
- * @param ssl boolean; if true SSL will be used.
- * @since Ant 1.6
- */
- public void setSSL(boolean ssl) {
- this.ssl = ssl;
- }
-
- /**
- * Set whether to allow authentication to switch to a TLS
- * connection via STARTTLS.
- * @param b boolean; if true STARTTLS will be supported.
- * @since Ant 1.8.0
- */
- public void setEnableStartTLS(boolean b) {
- this.starttls = b;
- }
-
- /**
- * Set the preferred encoding method.
- *
- * @param encoding The encoding (one of AUTO, MIME, UU, PLAIN).
- */
- public void setEncoding(Encoding encoding) {
- this.encoding = encoding.getValue();
- }
-
- /**
- * Set the mail server port.
- *
- * @param port The port to use.
- */
- public void setMailport(int port) {
- this.port = new Integer(port);
- }
-
- /**
- * Set the host.
- *
- * @param host The host to connect to.
- */
- public void setMailhost(String host) {
- this.host = host;
- }
-
- /**
- * Set the subject line of the email.
- *
- * @param subject Subject of this email.
- */
- public void setSubject(String subject) {
- this.subject = subject;
- }
-
- /**
- * Shorthand method to set the message.
- *
- * @param message Message body of this email.
- */
- public void setMessage(String message) {
- if (this.message != null) {
- throw new BuildException("Only one message can be sent in an "
- + "email");
- }
- this.message = new Message(message);
- this.message.setProject(getProject());
- }
-
- /**
- * Shorthand method to set the message from a file.
- *
- * @param file The file from which to take the message.
- */
- public void setMessageFile(File file) {
- if (this.message != null) {
- throw new BuildException("Only one message can be sent in an "
- + "email");
- }
- this.message = new Message(file);
- this.message.setProject(getProject());
- }
-
- /**
- * Shorthand method to set type of the text message, text/plain by default
- * but text/html or text/xml is quite feasible.
- *
- * @param type The new MessageMimeType value.
- */
- public void setMessageMimeType(String type) {
- this.messageMimeType = type;
- }
-
- /**
- * Add a message element.
- *
- * @param message The message object.
- * @throws BuildException if a message has already been added.
- */
- public void addMessage(Message message) throws BuildException {
- if (this.message != null) {
- throw new BuildException(
- "Only one message can be sent in an email");
- }
- this.message = message;
- }
-
- /**
- * Add a from address element.
- *
- * @param address The address to send from.
- */
- public void addFrom(EmailAddress address) {
- if (this.from != null) {
- throw new BuildException("Emails can only be from one address");
- }
- this.from = address;
- }
-
- /**
- * Shorthand to set the from address element.
- *
- * @param address The address to send mail from.
- */
- public void setFrom(String address) {
- if (this.from != null) {
- throw new BuildException("Emails can only be from one address");
- }
- this.from = new EmailAddress(address);
- }
-
- /**
- * Add a replyto address element.
- *
- * @param address The address to reply to.
- * @since Ant 1.6
- */
- public void addReplyTo(EmailAddress address) {
- this.replyToList.add(address);
- }
-
- /**
- * Shorthand to set the replyto address element.
- *
- * @param address The address to which replies should be directed.
- * @since Ant 1.6
- */
- public void setReplyTo(String address) {
- this.replyToList.add(new EmailAddress(address));
- }
-
- /**
- * Add a to address element.
- *
- * @param address An email address.
- */
- public void addTo(EmailAddress address) {
- toList.addElement(address);
- }
-
- /**
- * Shorthand to set the "to" address element.
- *
- * @param list Comma-separated list of addresses.
- */
- public void setToList(String list) {
- StringTokenizer tokens = new StringTokenizer(list, ",");
-
- while (tokens.hasMoreTokens()) {
- toList.addElement(new EmailAddress(tokens.nextToken()));
- }
- }
-
- /**
- * Add a "cc" address element.
- *
- * @param address The email address.
- */
- public void addCc(EmailAddress address) {
- ccList.addElement(address);
- }
-
- /**
- * Shorthand to set the "cc" address element.
- *
- * @param list Comma separated list of addresses.
- */
- public void setCcList(String list) {
- StringTokenizer tokens = new StringTokenizer(list, ",");
-
- while (tokens.hasMoreTokens()) {
- ccList.addElement(new EmailAddress(tokens.nextToken()));
- }
- }
-
- /**
- * Add a "bcc" address element.
- *
- * @param address The email address.
- */
- public void addBcc(EmailAddress address) {
- bccList.addElement(address);
- }
-
- /**
- * Shorthand to set the "bcc" address element.
- *
- * @param list comma separated list of addresses.
- */
- public void setBccList(String list) {
- StringTokenizer tokens = new StringTokenizer(list, ",");
-
- while (tokens.hasMoreTokens()) {
- bccList.addElement(new EmailAddress(tokens.nextToken()));
- }
- }
-
- /**
- * Set whether BuildExceptions should be passed back to the core.
- *
- * @param failOnError The new FailOnError value.
- */
- public void setFailOnError(boolean failOnError) {
- this.failOnError = failOnError;
- }
-
- /**
- * Set the list of files to be attached.
- *
- * @param filenames Comma-separated list of files.
- */
- public void setFiles(String filenames) {
- StringTokenizer t = new StringTokenizer(filenames, ", ");
-
- while (t.hasMoreTokens()) {
- createAttachments()
- .add(new FileResource(getProject().resolveFile(t.nextToken())));
- }
- }
-
- /**
- * Add a set of files (nested fileset attribute).
- *
- * @param fs The fileset.
- */
- public void addFileset(FileSet fs) {
- createAttachments().add(fs);
- }
-
- /**
- * Creates a Path as container for attachments. Supports any
- * filesystem resource-collections that way.
- * @return the path to be configured.
- * @since Ant 1.7
- */
- public Path createAttachments() {
- if (attachments == null) {
- attachments = new Path(getProject());
- }
- return attachments.createPath();
- }
-
- /**
- * Create a nested header element.
- * @return a Header instance.
- */
- public Header createHeader() {
- Header h = new Header();
- headers.add(h);
- return h;
- }
-
- /**
- * Set whether to include filenames.
- *
- * @param includeFileNames Whether to include filenames in the text of the
- * message.
- */
- public void setIncludefilenames(boolean includeFileNames) {
- this.includeFileNames = includeFileNames;
- }
-
- /**
- * Get whether file names should be included.
- *
- * @return Identifies whether file names should be included.
- */
- public boolean getIncludeFileNames() {
- return includeFileNames;
- }
-
- /**
- * Whether invalid recipients should be ignored (but a warning
- * will be logged) instead of making the task fail.
- *
- * <p>Even with this property set to true the task will still fail
- * if the mail couldn't be sent to any recipient at all.</p>
- *
- * @since Ant 1.8.0
- */
- public void setIgnoreInvalidRecipients(boolean b) {
- ignoreInvalidRecipients = b;
- }
-
- /**
- * Send an email.
- */
- public void execute() {
- Message savedMessage = message;
-
- try {
- Mailer mailer = null;
-
- // prepare for the auto select mechanism
- boolean autoFound = false;
- // try MIME format
- if (encoding.equals(MIME)
- || (encoding.equals(AUTO) && !autoFound)) {
- try {
- //check to make sure that activation.jar
- //and mail.jar are available - see bug 31969
- Class.forName("javax.activation.DataHandler");
- Class.forName("javax.mail.internet.MimeMessage");
-
- mailer = (Mailer) ClasspathUtils.newInstance(
- "org.apache.tools.ant.taskdefs.email.MimeMailer",
- EmailTask.class.getClassLoader(), Mailer.class);
- autoFound = true;
-
- log("Using MIME mail", Project.MSG_VERBOSE);
- } catch (BuildException e) {
- logBuildException("Failed to initialise MIME mail: ", e);
- }
- }
- // SMTP auth only allowed with MIME mail
- if (!autoFound && ((user != null) || (password != null))
- && (encoding.equals(UU) || encoding.equals(PLAIN))) {
- throw new BuildException("SMTP auth only possible with MIME mail");
- }
- // SSL only allowed with MIME mail
- if (!autoFound && (ssl || starttls)
- && (encoding.equals(UU) || encoding.equals(PLAIN))) {
- throw new BuildException("SSL and STARTTLS only possible with"
- + " MIME mail");
- }
- // try UU format
- if (encoding.equals(UU)
- || (encoding.equals(AUTO) && !autoFound)) {
- try {
- mailer = (Mailer) ClasspathUtils.newInstance(
- "org.apache.tools.ant.taskdefs.email.UUMailer",
- EmailTask.class.getClassLoader(), Mailer.class);
- autoFound = true;
- log("Using UU mail", Project.MSG_VERBOSE);
- } catch (BuildException e) {
- logBuildException("Failed to initialise UU mail: ", e);
- }
- }
- // try plain format
- if (encoding.equals(PLAIN)
- || (encoding.equals(AUTO) && !autoFound)) {
- mailer = new PlainMailer();
- autoFound = true;
- log("Using plain mail", Project.MSG_VERBOSE);
- }
- // a valid mailer must be present by now
- if (mailer == null) {
- throw new BuildException("Failed to initialise encoding: "
- + encoding);
- }
- // a valid message is required
- if (message == null) {
- message = new Message();
- message.setProject(getProject());
- }
- // an address to send from is required
- if (from == null || from.getAddress() == null) {
- throw new BuildException("A from element is required");
- }
- // at least one address to send to/cc/bcc is required
- if (toList.isEmpty() && ccList.isEmpty() && bccList.isEmpty()) {
- throw new BuildException("At least one of to, cc or bcc must "
- + "be supplied");
- }
- // set the mimetype if not done already (and required)
- if (messageMimeType != null) {
- if (message.isMimeTypeSpecified()) {
- throw new BuildException("The mime type can only be "
- + "specified in one location");
- }
- message.setMimeType(messageMimeType);
- }
- // set the character set if not done already (and required)
- if (charset != null) {
- if (message.getCharset() != null) {
- throw new BuildException("The charset can only be "
- + "specified in one location");
- }
- message.setCharset(charset);
- }
- message.setInputEncoding(messageFileInputEncoding);
-
- // identify which files should be attached
- Vector<File> files = new Vector<File>();
- if (attachments != null) {
- for (Resource r : attachments) {
- files.addElement(r.as(FileProvider.class)
- .getFile());
- }
- }
- // let the user know what's going to happen
- log("Sending email: " + subject, Project.MSG_INFO);
- log("From " + from, Project.MSG_VERBOSE);
- log("ReplyTo " + replyToList, Project.MSG_VERBOSE);
- log("To " + toList, Project.MSG_VERBOSE);
- log("Cc " + ccList, Project.MSG_VERBOSE);
- log("Bcc " + bccList, Project.MSG_VERBOSE);
-
- // pass the params to the mailer
- mailer.setHost(host);
- if (port != null) {
- mailer.setPort(port.intValue());
- mailer.setPortExplicitlySpecified(true);
- } else {
- mailer.setPort(SMTP_PORT);
- mailer.setPortExplicitlySpecified(false);
- }
- mailer.setUser(user);
- mailer.setPassword(password);
- mailer.setSSL(ssl);
- mailer.setEnableStartTLS(starttls);
- mailer.setMessage(message);
- mailer.setFrom(from);
- mailer.setReplyToList(replyToList);
- mailer.setToList(toList);
- mailer.setCcList(ccList);
- mailer.setBccList(bccList);
- mailer.setFiles(files);
- mailer.setSubject(subject);
- mailer.setTask(this);
- mailer.setIncludeFileNames(includeFileNames);
- mailer.setHeaders(headers);
- mailer.setIgnoreInvalidRecipients(ignoreInvalidRecipients);
-
- // send the email
- mailer.send();
-
- // let the user know what happened
- int count = files.size();
-
- log("Sent email with " + count + " attachment"
- + (count == 1 ? "" : "s"), Project.MSG_INFO);
- } catch (BuildException e) {
- logBuildException("Failed to send email: ", e);
- if (failOnError) {
- throw e;
- }
- } catch (Exception e) {
- log("Failed to send email: " + e.getMessage(), Project.MSG_WARN);
- if (failOnError) {
- throw new BuildException(e);
- }
- } finally {
- message = savedMessage;
- }
- }
-
- private void logBuildException(String reason, BuildException e) {
- Throwable t = e.getCause() == null ? e : e.getCause();
- log(reason + t.getMessage(), Project.MSG_WARN);
- }
-
- /**
- * Sets the character set of mail message.
- * Will be ignored if mimeType contains ....; Charset=... substring or
- * encoding is not <code>mime</code>.
- * @param charset the character encoding to use.
- * @since Ant 1.6
- */
- public void setCharset(String charset) {
- this.charset = charset;
- }
-
- /**
- * Returns the character set of mail message.
- *
- * @return Charset of mail message.
- * @since Ant 1.6
- */
- public String getCharset() {
- return charset;
- }
-
- /**
- * Sets the encoding to expect when reading the message from a file.
- * <p>Will be ignored if the message has been specified inline.</p>
- * @param encoding the name of the charset used
- * @since Ant 1.9.4
- */
- public void setMessageFileInputEncoding(String encoding) {
- messageFileInputEncoding = encoding;
- }
-
-}
-