/* * This library is part of OpenCms - * the Open Source Content Management System * * Copyright (c) Alkacon Software GmbH (http://www.alkacon.com) * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * For further information about Alkacon Software GmbH, please see the * company website: http://www.alkacon.com * * For further information about OpenCms, please see the * project website: http://www.opencms.org * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ package org.opencms.workplace.tools.workplace.broadcast; import org.opencms.file.CmsObject; import org.opencms.mail.CmsSimpleMail; import org.opencms.main.CmsIllegalArgumentException; import org.opencms.main.OpenCms; import org.opencms.util.CmsStringUtil; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; /** * Bean class for message information.<p> * * @since 6.0.0 */ public class CmsMessageInfo { /** Cc header string. */ private String m_cc = ""; /** From header string. */ private String m_from = ""; /** Message string. */ private String m_msg = ""; /** Subject header string. */ private String m_subject = ""; /** To header string. */ private String m_to = ""; /** * Default Constructor.<p> */ public CmsMessageInfo() { // noop } /** * Returns the cc string.<p> * * @return the cc string */ public String getCc() { return m_cc; } /** * Returns the from string.<p> * * @return the from string */ public String getFrom() { return m_from; } /** * Returns the message string.<p> * * @return the message string */ public String getMsg() { return m_msg; } /** * Returns the subject string.<p> * * @return the subject string */ public String getSubject() { return m_subject; } /** * Returns the to string.<p> * * @return the to string */ public String getTo() { return m_to; } /** * Sends the given message to the given addresses.<p> * * @param cms the cms context * * @throws Exception if something goes wrong */ public void sendEmail(CmsObject cms) throws Exception { // create a plain text email CmsSimpleMail theMail = new CmsSimpleMail(); theMail.setCharset(cms.getRequestContext().getEncoding()); theMail.setFrom(cms.getRequestContext().getCurrentUser().getEmail(), getFrom()); theMail.setTo(createInternetAddresses(getTo())); if (CmsStringUtil.isNotEmptyOrWhitespaceOnly(getCc())) { theMail.setCc(createInternetAddresses(getCc())); } theMail.setSubject("[" + OpenCms.getSystemInfo().getServerName() + "] " + getSubject()); theMail.setMsg(getMsg()); // send the mail theMail.send(); } /** * Sets the cc string.<p> * * @param cc the cc string */ public void setCc(String cc) { if (!CmsStringUtil.isEmptyOrWhitespaceOnly(cc)) { m_cc = cc; } } /** * Sets the from string.<p> * * @param from the from string */ public void setFrom(String from) { checkString(from); m_from = from; } /** * Sets the message string.<p> * * @param msg the message string */ public void setMsg(String msg) { checkString(msg); m_msg = msg; } /** * Sets the subject string.<p> * * @param subject the subject string */ public void setSubject(String subject) { checkString(subject); m_subject = subject; } /** * Sets the to string.<p> * * This has to be a ';' separated string of email-addresses.<p> * * * @param to the to string */ public void setTo(String to) { m_to = to; } /** * Throws a runtime exception if the string is null, empty or contains JavaScript.<p> * * @param string the string to check */ private void checkString(String string) { if (CmsStringUtil.isEmptyOrWhitespaceOnly(string)) { throw new CmsIllegalArgumentException(Messages.get().container(Messages.ERR_EMPTY_STRING_0)); } } /** * Creates a list of internet addresses (email) from a semicolon separated String.<p> * * @param mailAddresses a semicolon separated String with email addresses * @return list of internet addresses (email) * @throws AddressException if an email address is not correct */ private List createInternetAddresses(String mailAddresses) throws AddressException { if (CmsStringUtil.isNotEmpty(mailAddresses)) { // at least one email address is present, generate list StringTokenizer T = new StringTokenizer(mailAddresses, ";"); List addresses = new ArrayList(T.countTokens()); while (T.hasMoreTokens()) { InternetAddress address = new InternetAddress(T.nextToken().trim()); addresses.add(address); } return addresses; } else { // no address given, return empty list return Collections.EMPTY_LIST; } } }