aboutsummaryrefslogtreecommitdiff
path: root/basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java
diff options
context:
space:
mode:
Diffstat (limited to 'basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java')
-rw-r--r--basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java257
1 files changed, 257 insertions, 0 deletions
diff --git a/basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java b/basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java
new file mode 100644
index 0000000..ab83b38
--- /dev/null
+++ b/basebuilder-3.6.2/org.eclipse.releng.basebuilder/plugins/org.eclipse.build.tools/src/org/eclipse/releng/Mailer.java
@@ -0,0 +1,257 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2006 IBM Corporation and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.releng;
+
+/**
+ * A Class that sends build related email messages. host, sender, recipient and
+ * build related information set in monitor.properties
+ */
+
+import javax.activation.DataHandler;
+import javax.activation.FileDataSource;
+import javax.mail.*;
+import javax.mail.internet.*;
+
+import java.io.File;
+import java.util.StringTokenizer;
+import java.util.Properties;
+
+public class Mailer {
+
+ // flag that determines whether or not to send mail
+ boolean sendMail = true;
+
+ // the Object that holds the key value pairs in monitor.properties
+ private BuildProperties buildProperties;
+
+ //convert the comma separated list of email addressed into an array of Address objects
+ private Address[] getAddresses(String recipientList) {
+ int i = 0;
+ StringTokenizer recipients = new StringTokenizer(recipientList, ",");
+ Address[] addresses = new Address[recipients.countTokens()];
+
+ while (recipients.hasMoreTokens()) {
+ try {
+ addresses[i++] = new InternetAddress(recipients.nextToken());
+ } catch (AddressException e) {
+ System.out.println("Unable to create address");
+ }
+ }
+ return addresses;
+ }
+
+ public Mailer(){
+ this("monitor.properties");
+ }
+ public Mailer(String buildPropertiesPath){
+ buildProperties = new BuildProperties(buildPropertiesPath);
+ if (buildProperties.getHost().equals("")||buildProperties.getSender().equals("")||buildProperties.getToRecipientList().equals("")){
+ sendMail=false;
+ }
+ }
+
+
+ public static void main(String args[]) {
+ Mailer mailer=new Mailer(args[0]);
+ mailer.sendTextMessage(args[1],args[2]);
+ }
+
+ public void sendMessage(String aSubject, String aMessage) {
+ if (aSubject == null || aMessage == null || sendMail == false){
+ printEmailFailureNotice(aSubject,aMessage);
+ }
+
+ // Get system properties
+ Properties props = System.getProperties();
+
+ // Setup mail server
+ props.put("mail.smtp.host", buildProperties.getHost());
+
+ // Get session
+ Session session = Session.getDefaultInstance(props, null);
+
+ // Define message
+ MimeMessage message = new MimeMessage(session);
+
+ try {
+
+ // Set the from address
+ message.setFrom(new InternetAddress(buildProperties.getSender()));
+
+ // Set the to address
+ message.addRecipients(Message.RecipientType.TO, getAddresses(buildProperties.getToRecipientList()));
+
+ // Set the subject
+ message.setSubject(buildProperties.getBuildSubjectPrefix()+
+ "Build "
+ + buildProperties.getBuildid()
+ + " (Timestamp: "
+ + buildProperties.getTimestamp()
+ + "):"
+ + aSubject);
+
+ // Set the content
+ message.setText(
+ "Build "
+ + buildProperties.getBuildid()
+ + " (Timestamp: "
+ + buildProperties.getTimestamp()
+ + "): "
+ + aMessage);
+
+ // Send message
+ Transport.send(message);
+
+ } catch (AddressException e) {
+ e.printStackTrace();
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void sendTextMessage(String aSubject, String aMessage) {
+ if (aSubject == null || aMessage == null || sendMail == false){
+ printEmailFailureNotice(aSubject,aMessage);
+ }
+
+ // Get system properties
+ Properties props = System.getProperties();
+
+ // Setup mail server
+ props.put("mail.smtp.host", buildProperties.getHost());
+
+ // Get session
+ Session session = Session.getDefaultInstance(props, null);
+
+ // Define message
+ MimeMessage message = new MimeMessage(session);
+
+ try {
+
+ // Set the from address
+ message.setFrom(new InternetAddress(buildProperties.getSender()));
+
+ // Set the to address
+ message.addRecipients(Message.RecipientType.BCC, getAddresses(buildProperties.getTextRecipientList()));
+
+ // Set the subject
+ message.setSubject(buildProperties.getBuildSubjectPrefix()+
+ "Build "
+ + buildProperties.getBuildid()
+ + ":"
+ + aSubject);
+
+ // Set the content
+ message.setText(aMessage);
+
+ // Send message
+ Transport.send(message);
+
+ } catch (AddressException e) {
+ e.printStackTrace();
+ } catch (MessagingException e) {
+ e.printStackTrace();
+ }
+ }
+
+ public void sendMultiPartMessage(
+ // a method for sending mail with attachments
+ String aSubject, String aMessage, String[] attachments) {
+ if (aSubject == null || aMessage == null || sendMail == false){
+ printEmailFailureNotice(aSubject,aMessage);
+ }
+
+ // Get system properties
+ Properties props = System.getProperties();
+
+ // Setup mail server
+ props.put("mail.smtp.host", buildProperties.getHost());
+
+ // Get session
+ Session session = Session.getDefaultInstance(props, null);
+
+ // Define message
+ MimeMessage message = new MimeMessage(session);
+
+ Multipart mp = new MimeMultipart();
+
+ try {
+ // Set the from address
+ message.setFrom(new InternetAddress(buildProperties.getSender()));
+
+ // Set the to address
+ message.addRecipients(Message.RecipientType.TO, getAddresses(buildProperties.getToRecipientList()));
+
+ // Set the subject
+ message.setSubject(buildProperties.getBuildSubjectPrefix()+
+ "Build "
+ + buildProperties.getBuildid()
+ + " (Timestamp: "
+ + buildProperties.getTimestamp()
+ + "):"
+ + aSubject);
+
+ // create and fill the first message part
+ MimeBodyPart part = new MimeBodyPart();
+ part.setText(
+ "Build "
+ + buildProperties.getBuildid()
+ + " (Timestamp: "
+ + buildProperties.getTimestamp()
+ + "): "
+ + aMessage);
+ mp.addBodyPart(part);
+
+ //for each attachment create new message part
+ for (int i = 0; i < attachments.length; i++) {
+ MimeBodyPart attachmentPart = new MimeBodyPart();
+ // attach the file to the message
+ FileDataSource attachment = new FileDataSource(attachments[i]);
+ attachmentPart.setDataHandler(new DataHandler(attachment));
+ File attachmentFile=new File(attachments[i]);
+ attachmentPart.setFileName(attachmentFile.getParent()+"-"+attachmentFile.getName());
+ mp.addBodyPart(attachmentPart);
+ }
+
+ // add the Multipart to the message
+ message.setContent(mp);
+
+ Transport.send(message);
+
+ } catch (AddressException e) {
+ } catch (MessagingException e) {
+ }
+ }
+
+ private void printEmailFailureNotice(String aSubject, String aMessage){
+ System.out.println("Email failed. Settings:");
+ System.out.println("\nhost="+buildProperties.getHost()+"\nsender="+buildProperties.getSender()+"\nrecipients="+buildProperties.getToRecipientList());
+ System.out.println("\nSubject="+aSubject+"\nMessage="+aMessage);
+ return;
+ }
+
+ /**
+ * Returns the buildProperties.
+ * @return BuildProperties
+ */
+ public BuildProperties getBuildProperties() {
+ return buildProperties;
+ }
+
+ /**
+ * Sets the buildProperties.
+ * @param buildProperties The buildProperties to set
+ */
+ public void setBuildProperties(BuildProperties buildProperties) {
+ this.buildProperties = buildProperties;
+ }
+
+}