$.MailContactServiceImpl.java Source code

Java tutorial

Introduction

Here is the source code for $.MailContactServiceImpl.java

Source

    /**
     * Copyright ou  ou Copr. Ministre de l'Europe et des Affaires trangres (2017)
     * <p/>
     * pole-architecture.dga-dsi-psi@diplomatie.gouv.fr
     * <p/>
     * Ce logiciel est un programme informatique servant  faciliter la cration d'applications Web conformment
     * aux rfrentiels gnraux franais : RGI, RGS et RGAA
     * <p/>
     * Ce logiciel est rgi par la licence CeCILL soumise au droit franais et respectant les principes de
     * diffusion des logiciels libres. Vous pouvez utiliser, modifier et/ou redistribuer ce programme sous les
     * conditions de la licence CeCILL telle que diffuse par le CEA, le CNRS et l'INRIA sur le site
     * "http://www.cecill.info".
     * <p/>
     * En contrepartie de l'accessibilit au code source et des droits de copie, de modification et de
     * redistribution accords par cette licence, il n'est offert aux utilisateurs qu'une garantie limite. Pour
     * les mmes raisons, seule une responsabilit restreinte pse sur l'auteur du programme, le titulaire des
     * droits patrimoniaux et les concdants successifs.
     * <p/>
     * A cet gard l'attention de l'utilisateur est attire sur les risques associs au chargement, 
     * l'utilisation,  la modification et/ou au dveloppement et  la reproduction du logiciel par l'utilisateur
     * tant donn sa spcificit de logiciel libre, qui peut le rendre complexe  manipuler et qui le rserve
     * donc  des dveloppeurs et des professionnels avertis possdant des connaissances informatiques
     * approfondies. Les utilisateurs sont donc invits  charger et tester l'adquation du logiciel  leurs
     * besoins dans des conditions permettant d'assurer la scurit de leurs systmes et ou de leurs donnes et,
     * plus gnralement,  l'utiliser et l'exploiter dans les mmes conditions de scurit.
     * <p/>
     * Le fait que vous puissiez accder  cet en-tte signifie que vous avez pris connaissance de la licence
     * CeCILL, et que vous en avez accept les termes.
     * <p/>
     * <p/>
     * Copyright or  or Copr. Ministry for Europe and Foreign Affairs (2017)
     * <p/>
     * pole-architecture.dga-dsi-psi@diplomatie.gouv.fr
     * <p/>
     * This software is a computer program whose purpose is to facilitate creation of web application in
     * accordance with french general repositories : RGI, RGS and RGAA.
     * <p/>
     * This software is governed by the CeCILL license under French law and abiding by the rules of distribution
     * of free software. You can use, modify and/ or redistribute the software under the terms of the CeCILL
     * license as circulated by CEA, CNRS and INRIA at the following URL "http://www.cecill.info".
     * <p/>
     * As a counterpart to the access to the source code and rights to copy, modify and redistribute granted by
     * the license, users are provided only with a limited warranty and the software's author, the holder of the
     * economic rights, and the successive licensors have only limited liability.
     * <p/>
     * In this respect, the user's attention is drawn to the risks associated with loading, using, modifying
     * and/or developing or reproducing the software by the user in light of its specific status of free software,
     * that may mean that it is complicated to manipulate, and that also therefore means that it is reserved for
     * developers and experienced professionals having in-depth computer knowledge. Users are therefore encouraged
     * to load and test the software's suitability as regards their requirements in conditions enabling the
     * security of their systems and/or data to be ensured and, more generally, to use and operate it in the same
     * conditions as regards security.
     * <p/>
     * The fact that you are presently reading this means that you have had knowledge of the CeCILL license and
     * that you accept its terms.
     *
     */
    #set($symbol_pound='#')#set($symbol_dollar='$')#set($symbol_escape='\')
package ${package}.mail.service;

    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.HashMap;
    import java.util.Locale;
    import java.util.Map;

    import org.apache.commons.lang3.text.WordUtils;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.beans.factory.annotation.Autowired;

    import hornet.framework.exception.BusinessException;
    import hornet.framework.mail.MailService;

    /**
     * Implementation pour l'envoi d'un mail de contact.
     *
     * @author MEAE - Ministre de l'Europe et des Affaires trangres
     */
    public class MailContactServiceImpl implements MailContactService {

        /** Recuperation du logger. */
        private static final Logger LOGGER = LoggerFactory.getLogger(MailContactService.class);

        /** JavaMailSender. */
        @Autowired
        private transient MailService mailService;

        /** L'Objet du message de contact. */
        private final transient String objetContactMail;

        /** Le Corps du message de contact. */
        private final transient String corpsContactMail;

        /**
         * Les destinataires du mail de contact.
         */
        private final transient String[] destinataires;

        /** Nom de l'application. */
        private final transient String applicationName;

        /** Url de l'application. */
        private final transient String applicationUrl;

        /** Champ ReplyTo. */
        @SuppressWarnings("unused")
        private static final String NO_REPLY = "NoReply";

        /**
         * Constructeur.
         *
         * @param mailService
         *            Hornet MailService
         * @param applicationUrl
         *            Url de l'application
         * @param applicationName
         *            Nom de l'application
         * @param objetContactMail
         *            Objet du message de contact
         * @param corpsContactMail
         *            Corps du message de contact
         * @param destinataires
         *            Les destinataires du mail de contact
         */
        public MailContactServiceImpl(final String applicationUrl, final String applicationName,
                final String objetContactMail, final String corpsContactMail, final String[] destinataires) {

            this.applicationUrl = applicationUrl;
            this.applicationName = applicationName;
            this.objetContactMail = objetContactMail;
            this.corpsContactMail = corpsContactMail;
            this.destinataires = destinataires.clone();
        }

        /** {@inheritDoc} */
        @Override
        public void envoyerMail(final String nom, final String prenom, final String fromAddress, final String message) {

            try {
                final String sujet = String.format(objetContactMail, applicationName, WordUtils.capitalize(prenom),
                        WordUtils.capitalize(nom));

                final Map<String, Object> params = new HashMap<String, Object>();
                params.put("nom", WordUtils.capitalize(nom));
                params.put("prenom", WordUtils.capitalize(prenom));
                params.put("corps", message);
                final SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy '' HH:mm:ss", Locale.FRENCH);
                params.put("date", sdf.format(new Date()));
                params.put("applicationName", applicationName);
                params.put("applicationUrl", applicationUrl);

                // Exemple d'utilisation d'un NO_REPLY ou d'ajout d'un CC
                // params.put(MailServiceImpl.SMTP_HEADER_REPLYTO, NO_REPLY);
                // params.put(MailServiceImpl.SMTP_HEADER_CC, "root@localhost.com");

                mailService.envoyerDepuisModele(fromAddress, sujet, corpsContactMail, params, destinataires);

            } catch (final Exception e) {
                MailContactServiceImpl.LOGGER.error("Erreur lors de la tentative d'envoi de mail de contact.", e);
                throw new BusinessException("ERR-CODE-MAIL-001", e);
            }

        }

    }