dk.dma.ais.abnormal.analyzer.reports.ReportMailer.java Source code

Java tutorial

Introduction

Here is the source code for dk.dma.ais.abnormal.analyzer.reports.ReportMailer.java

Source

/* Copyright (c) 2011 Danish Maritime Authority
 *
 * 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 3 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.
 *
 * You should have received a copy of the GNU General Public License
 * along with this library.  If not, see <http://www.gnu.org/licenses/>.
 */
package dk.dma.ais.abnormal.analyzer.reports;

import com.google.inject.Inject;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.HtmlEmail;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_FROM;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_HOST;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_PASS;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_PORT;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_SSL;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_TO;
import static dk.dma.ais.abnormal.analyzer.config.Configuration.CONFKEY_REPORTS_MAILER_SMTP_USER;

/**
 * The ReportMailer will send a message consisting of a subject and a body to a
 * pre-configured set of recipients.
 *
 * @author Thomas Borg Salling <tbsalling@tbsalling.dk>
 */
public class ReportMailer {

    private static final Logger LOG = LoggerFactory.getLogger(ReportMailer.class);

    {
        LOG.info(this.getClass().getSimpleName() + " created (" + this + ").");
    }

    /** The application main configuration class */
    @Inject
    Configuration configuration;

    /**
     * Send email with subject and message body.
     * @param subject the email subject.
     * @param body the email body.
     */
    public void send(String subject, String body) {
        try {
            HtmlEmail email = new HtmlEmail();
            email.setHostName(configuration.getString(CONFKEY_REPORTS_MAILER_SMTP_HOST, "localhost"));
            email.setSmtpPort(configuration.getInt(CONFKEY_REPORTS_MAILER_SMTP_PORT, 465));
            email.setAuthenticator(
                    new DefaultAuthenticator(configuration.getString(CONFKEY_REPORTS_MAILER_SMTP_USER, "anonymous"),
                            configuration.getString(CONFKEY_REPORTS_MAILER_SMTP_PASS, "guest")));
            email.setStartTLSEnabled(false);
            email.setSSLOnConnect(configuration.getBoolean(CONFKEY_REPORTS_MAILER_SMTP_SSL, true));
            email.setFrom(configuration.getString(CONFKEY_REPORTS_MAILER_SMTP_FROM, ""));
            email.setSubject(subject);
            email.setHtmlMsg(body);
            String[] receivers = configuration.getStringArray(CONFKEY_REPORTS_MAILER_SMTP_TO);
            for (String receiver : receivers) {
                email.addTo(receiver);
            }
            email.send();
            LOG.info("Report sent with email to " + email.getToAddresses().toString() + " (\"" + subject + "\")");
        } catch (EmailException e) {
            LOG.error(e.getMessage(), e);
        }
    }

}