Java tutorial
/** * 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); } } }