extensions/net.sf.basedb.labenv/trunk/src/net/sf/basedb/labenv/util/MailUtil.java

Code
Comments
Other
Rev Date Author Line
2432 16 May 14 olle 1 /**
2432 16 May 14 olle 2   $Id $
2432 16 May 14 olle 3
2432 16 May 14 olle 4   Copyright (C) 2014 Olle MÃ¥nsson
2432 16 May 14 olle 5
2432 16 May 14 olle 6   This file is part of the LabEnv extension for BASE.
2432 16 May 14 olle 7   Available at http://baseplugins.thep.lu.se/
2432 16 May 14 olle 8   BASE main site: http://base.thep.lu.se/
2432 16 May 14 olle 9   -----------------------------------------------------------
2432 16 May 14 olle 10   
2432 16 May 14 olle 11   This is free software; you can redistribute it and/or
2432 16 May 14 olle 12   modify it under the terms of the GNU General Public License
2432 16 May 14 olle 13   as published by the Free Software Foundation; either version 3
2432 16 May 14 olle 14   of the License, or (at your option) any later version.
2432 16 May 14 olle 15   
2432 16 May 14 olle 16   The software is distributed in the hope that it will be useful,
2432 16 May 14 olle 17   but WITHOUT ANY WARRANTY; without even the implied warranty of
2432 16 May 14 olle 18   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
2432 16 May 14 olle 19   GNU General Public License for more details.
2432 16 May 14 olle 20   
2432 16 May 14 olle 21   You should have received a copy of the GNU General Public License
2432 16 May 14 olle 22   along with BASE. If not, see <http://www.gnu.org/licenses/>.
2432 16 May 14 olle 23
2432 16 May 14 olle 24 */
2432 16 May 14 olle 25 package net.sf.basedb.labenv.util;
2432 16 May 14 olle 26
2432 16 May 14 olle 27 import java.io.UnsupportedEncodingException;
2432 16 May 14 olle 28 import java.util.Date;
2432 16 May 14 olle 29 import java.util.Properties;
2432 16 May 14 olle 30 import javax.mail.Authenticator;
2432 16 May 14 olle 31 import javax.mail.BodyPart;
2432 16 May 14 olle 32 import javax.mail.Message;
2432 16 May 14 olle 33 import javax.mail.MessagingException;
2432 16 May 14 olle 34 import javax.mail.PasswordAuthentication;
2432 16 May 14 olle 35 import javax.mail.Session;
2432 16 May 14 olle 36 import javax.mail.Transport;
2432 16 May 14 olle 37 import javax.mail.internet.AddressException;
2432 16 May 14 olle 38 import javax.mail.internet.InternetAddress;
2432 16 May 14 olle 39 import javax.mail.internet.MimeBodyPart;
2432 16 May 14 olle 40 import javax.mail.internet.MimeMessage;
2432 16 May 14 olle 41 import javax.mail.internet.MimeMultipart;
2432 16 May 14 olle 42
2432 16 May 14 olle 43 import org.slf4j.Logger;
2432 16 May 14 olle 44 import org.slf4j.LoggerFactory;
2432 16 May 14 olle 45
2432 16 May 14 olle 46 /**
2432 16 May 14 olle 47  * This class contains utilities for sending notification e-mails.
2432 16 May 14 olle 48  * Uses the JavaMail API and the JavaBeans Activation Framework (JAF)
2432 16 May 14 olle 49  * extension that provides the javax.activation package.
2432 16 May 14 olle 50  * 
2432 16 May 14 olle 51  * @author olle
2432 16 May 14 olle 52  */
2432 16 May 14 olle 53 public class MailUtil
2432 16 May 14 olle 54 {
2432 16 May 14 olle 55   /*
2432 16 May 14 olle 56    * Logger used. Used to log specific events.
2432 16 May 14 olle 57    */
2432 16 May 14 olle 58   private static final Logger log = LoggerFactory.getLogger(MailUtil.class);
2432 16 May 14 olle 59
2432 16 May 14 olle 60
2432 16 May 14 olle 61   /**
2432 16 May 14 olle 62    * Default constructor.
2432 16 May 14 olle 63    */
2432 16 May 14 olle 64   public MailUtil()
2432 16 May 14 olle 65   {}
2432 16 May 14 olle 66
2432 16 May 14 olle 67
2432 16 May 14 olle 68   /**
2432 16 May 14 olle 69    * Sends a notification e-mail.
2432 16 May 14 olle 70    *
2432 16 May 14 olle 71    * @param smtpHost String The SMTP host to use.
2432 16 May 14 olle 72    * @param fromAddress String The "from" address to use.
2432 16 May 14 olle 73    * @param fromName String The "from" name to use.
2432 16 May 14 olle 74    * @param messageSubject String A string with the message subject line.
2432 16 May 14 olle 75    * @param messageBody String A string with the message body text.
2432 16 May 14 olle 76    */
2432 16 May 14 olle 77   public void sendMail(String smtpHost, String fromAddress, String fromName, String toAddress, String messageSubject, String messageBody)
2432 16 May 14 olle 78   {
2432 16 May 14 olle 79     log.debug("smtpHost = \"" + smtpHost + "\"");
2432 16 May 14 olle 80     log.debug("fromAddress = \"" + fromAddress + "\"");
2432 16 May 14 olle 81     log.debug("fromName = \"" + fromName + "\"");
2432 16 May 14 olle 82     log.debug("toAdress = \"" + toAddress + "\"");
2432 16 May 14 olle 83     log.debug("messageSubject = \"" + messageSubject + "\"");
2432 16 May 14 olle 84     if (fromAddress == null || fromAddress.equals(""))
2432 16 May 14 olle 85     {
2432 16 May 14 olle 86       fromAddress = "noreply@localhost";
2432 16 May 14 olle 87     }
2432 16 May 14 olle 88     // Send mail message
2432 16 May 14 olle 89     Properties props = new Properties();
2432 16 May 14 olle 90     props.put("mail.smtp.host", smtpHost);
2514 18 Jun 14 olle 91     props.put("mail.debug", "false");
2444 22 May 14 olle 92     Session session = Session.getInstance(props, new ForcedAuthenticator());
2432 16 May 14 olle 93     Message mailMessage = new MimeMessage(session);
2432 16 May 14 olle 94     try
2432 16 May 14 olle 95     {
2432 16 May 14 olle 96       // Mail message header
2432 16 May 14 olle 97       mailMessage.setFrom(new InternetAddress(fromAddress, fromName));
2432 16 May 14 olle 98       mailMessage.setRecipient(Message.RecipientType.TO, new InternetAddress(toAddress));
2432 16 May 14 olle 99       mailMessage.setSubject(messageSubject);
2432 16 May 14 olle 100       // Mail message body
2432 16 May 14 olle 101       BodyPart msgBodyPart = new MimeBodyPart();
2432 16 May 14 olle 102       msgBodyPart.setContent(messageBody, "text/html");
2432 16 May 14 olle 103       // Define optional images etc.
2432 16 May 14 olle 104       //BodyPart embedImage = new MimeBodyPart();
2432 16 May 14 olle 105       //DataSource dataSource = new URLDataSource(new URL(inlineImage));
2432 16 May 14 olle 106       //embedImage.setDataHandler(new DataHandler(dataSource));
2432 16 May 14 olle 107       //embedImage.setHeader("Content-ID", "<logo>");
2432 16 May 14 olle 108       // Add multipart components
2432 16 May 14 olle 109       MimeMultipart multipart = new MimeMultipart();
2432 16 May 14 olle 110       multipart.addBodyPart(msgBodyPart);
2432 16 May 14 olle 111       // multipart.addBodyPart(embedImage);
2432 16 May 14 olle 112       mailMessage.setContent(multipart);
2432 16 May 14 olle 113       mailMessage.setSentDate(new Date());
2432 16 May 14 olle 114       Transport.send(mailMessage);
2432 16 May 14 olle 115     }
2432 16 May 14 olle 116     catch (AddressException e)
2432 16 May 14 olle 117     {
2432 16 May 14 olle 118       log.debug("AddressException when trying to send notification mail: " + e);
2432 16 May 14 olle 119     }
2432 16 May 14 olle 120     catch (MessagingException e1)
2432 16 May 14 olle 121     {
2432 16 May 14 olle 122       log.debug("MessagingException when trying to send notification mail: " + e1);
2432 16 May 14 olle 123     }
2432 16 May 14 olle 124     catch (UnsupportedEncodingException e2)
2432 16 May 14 olle 125     {
2432 16 May 14 olle 126       log.debug("UnsupportedEncodingException when trying to send notification mail: " + e2);
2432 16 May 14 olle 127     }
2432 16 May 14 olle 128     catch (Exception e3)
2432 16 May 14 olle 129     {
2432 16 May 14 olle 130       log.debug("Exception when trying to send notification mail: " + e3);
2432 16 May 14 olle 131     }
2432 16 May 14 olle 132     //catch (MalformedURLException e)
2432 16 May 14 olle 133     //{
2432 16 May 14 olle 134     //  log.debug("MalformedURLException when trying to send notification mail : + e");
2432 16 May 14 olle 135     //}
2432 16 May 14 olle 136   }
2432 16 May 14 olle 137
2432 16 May 14 olle 138   class ForcedAuthenticator extends Authenticator
2432 16 May 14 olle 139   {
3013 05 Dec 14 nicklas 140     @Override
2432 16 May 14 olle 141     public PasswordAuthentication getPasswordAuthentication()
2432 16 May 14 olle 142     {
2432 16 May 14 olle 143       String smtpUserName = new String("");
2432 16 May 14 olle 144       String smtpPassword = new String("");
2432 16 May 14 olle 145       return new PasswordAuthentication(smtpUserName, smtpPassword);
2432 16 May 14 olle 146     }
2432 16 May 14 olle 147   }
2432 16 May 14 olle 148 }