Java tutorial
package com.hg.ecommerce.util; /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. 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. For additional information regarding * copyright in this work, please see the NOTICE file in the top level * directory of this distribution. */ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.SendFailedException; import javax.mail.Session; import javax.mail.Transport; import javax.mail.Address; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import org.apache.commons.lang3.StringUtils; /** * Util class from Apache Roller * Reserve the license statement above * @author lihe * */ public class MailUtil extends Object { private static Log mLogger = LogFactory.getFactory().getInstance(MailUtil.class); // agangolli: Incorporated suggested changes from Ken Blackler. /** * This method is used to send a Message with a pre-defined * mime-type. * * @param from e-mail address of sender * @param to e-mail address(es) of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @param mimeType type of message, i.e. text/plain or text/html * @throws MessagingException the exception to indicate failure */ public static void sendMessage(Session session, String from, String[] to, String[] cc, String[] bcc, String subject, String content, String mimeType) throws MessagingException { MimeMessage message = new MimeMessage(session); // n.b. any default from address is expected to be determined by caller. if (!StringUtils.isEmpty(from)) { InternetAddress sentFrom = new InternetAddress(from); message.setFrom(sentFrom); if (mLogger.isDebugEnabled()) { mLogger.debug("e-mail from: " + sentFrom); } } if (to != null) { InternetAddress[] sendTo = new InternetAddress[to.length]; for (int i = 0; i < to.length; i++) { sendTo[i] = new InternetAddress(to[i]); if (mLogger.isDebugEnabled()) { mLogger.debug("sending e-mail to: " + to[i]); } } message.setRecipients(Message.RecipientType.TO, sendTo); } if (cc != null) { InternetAddress[] copyTo = new InternetAddress[cc.length]; for (int i = 0; i < cc.length; i++) { copyTo[i] = new InternetAddress(cc[i]); if (mLogger.isDebugEnabled()) { mLogger.debug("copying e-mail to: " + cc[i]); } } message.setRecipients(Message.RecipientType.CC, copyTo); } if (bcc != null) { InternetAddress[] copyTo = new InternetAddress[bcc.length]; for (int i = 0; i < bcc.length; i++) { copyTo[i] = new InternetAddress(bcc[i]); if (mLogger.isDebugEnabled()) { mLogger.debug("blind copying e-mail to: " + bcc[i]); } } message.setRecipients(Message.RecipientType.BCC, copyTo); } message.setSubject((subject == null) ? "(no subject)" : subject, "UTF-8"); message.setContent(content, mimeType); message.setSentDate(new java.util.Date()); // First collect all the addresses together. Address[] remainingAddresses = message.getAllRecipients(); int nAddresses = remainingAddresses.length; boolean bFailedToSome = false; SendFailedException sendex = new SendFailedException("Unable to send message to some recipients"); // Try to send while there remain some potentially good addresses do { // Avoid a loop if we are stuck nAddresses = remainingAddresses.length; try { // Send to the list of remaining addresses, ignoring the addresses attached to the message Transport.send(message, remainingAddresses); } catch (SendFailedException ex) { bFailedToSome = true; sendex.setNextException(ex); // Extract the remaining potentially good addresses remainingAddresses = ex.getValidUnsentAddresses(); } } while (remainingAddresses != null && remainingAddresses.length > 0 && remainingAddresses.length != nAddresses); if (bFailedToSome) { throw sendex; } } /** * This method is used to send a Text Message. * * @param from e-mail address of sender * @param to e-mail addresses of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendTextMessage(Session session, String from, String[] to, String[] cc, String[] bcc, String subject, String content) throws MessagingException { sendMessage(session, from, to, cc, bcc, subject, content, "text/plain; charset=utf-8"); } /** * This method overrides the sendTextMessage to specify * one receiver and mulitple cc recipients. * * @param from e-mail address of sender * @param to e-mail addresses of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendTextMessage(Session session, String from, String to, String[] cc, String[] bcc, String subject, String content) throws MessagingException { String[] recipient = null; if (to != null) { recipient = new String[] { to }; } sendMessage(session, from, recipient, cc, bcc, subject, content, "text/plain; charset=utf-8"); } /** * This method overrides the sendTextMessage to specify * only one receiver and cc recipients, rather than * an array of recipients. * * @param from e-mail address of sender * @param to e-mail address of recipient * @param cc e-mail address of cc recipient * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendTextMessage(Session session, String from, String to, String cc, String bcc, String subject, String content) throws MessagingException { String[] recipient = null; String[] copy = null; String[] bcopy = null; if (to != null) { recipient = new String[] { to }; } if (cc != null) { copy = new String[] { cc }; } if (bcc != null) { bcopy = new String[] { bcc }; } sendMessage(session, from, recipient, copy, bcopy, subject, content, "text/plain; charset=utf-8"); } /** * This method is used to send a HTML Message * * @param from e-mail address of sender * @param to e-mail address(es) of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendHTMLMessage(Session session, String from, String[] to, String[] cc, String[] bcc, String subject, String content) throws MessagingException { sendMessage(session, from, to, cc, bcc, subject, content, "text/html; charset=utf-8"); } /** * This method overrides the sendHTMLMessage to specify * only one sender, rather than an array of senders. * * @param from e-mail address of sender * @param to e-mail address of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendHTMLMessage(Session session, String from, String to, String cc, String bcc, String subject, String content) throws MessagingException { String[] recipient = null; String[] copy = null; String[] bcopy = null; if (to != null) { recipient = new String[] { to }; } if (cc != null) { copy = new String[] { cc }; } if (bcc != null) { bcopy = new String[] { bcc }; } sendMessage(session, from, recipient, copy, bcopy, subject, content, "text/html; charset=utf-8"); } /** * This method overrides the sendHTMLMessage to specify * one receiver and mulitple cc recipients. * * @param from e-mail address of sender * @param to e-mail address of recipient * @param cc e-mail addresses of recipients * @param subject subject of e-mail * @param content the body of the e-mail * @throws MessagingException the exception to indicate failure */ public static void sendHTMLMessage(Session session, String from, String to, String[] cc, String[] bcc, String subject, String content) throws MessagingException { String[] recipient = null; if (to != null) { recipient = new String[] { to }; } sendMessage(session, from, recipient, cc, bcc, subject, content, "text/html; charset=utf-8"); } }