diff --git a/references.bib b/references.bib index 606b72e..bbb4d08 100644 --- a/references.bib +++ b/references.bib @@ -46,8 +46,16 @@ } @misc{amazonses, - author={Amazon Simple Email Service} + author={Amazon Simple Email Service}, howpublished="\url{https://aws.amazon.com/fr/ses/}", - year=2023, note="[En ligne; accédé le 02 Février 2023]" } + +@inproceedings{amazonsestemplate, + author={Amazon Web Services}, + title={Using templates to send personalized email with the Amazon SES API}, + booktitle={Amazon Simple Email Service - Developer Guide}, + howpublished="\url{https://docs.aws.amazon.com/ses/latest/dg/send-personalized-email-api.html}", + pages={85--94}, + note="[En ligne; accédé le 04 Février 2023]" +} diff --git a/report.tex b/report.tex index f8fd36a..b5cff4d 100644 --- a/report.tex +++ b/report.tex @@ -88,10 +88,10 @@ \newfontfamily{\SourceSans}{Source Sans Pro} % Looks like the font from google fonts has a different case, % so I'm stuck with scanning for existing fonts -\IfFontExistsTF{Source Sans Semibold}{ +\IfFontExistsTF{Source Sans Pro Semibold}{ \newfontfamily{\SourceSansSB}[UprightFont={* Semibold}]{Source Sans Pro} }{ - \newfontfamily{\SourceSansSB}[UprightFont={* SemiBold}]{Source Sans Pro} + \newfontfamily{\SourceSansSB}[UprightFont={* Semi-Bold}]{Source Sans Pro} } \setmainfont{Source Sans Pro} % \newfontfamily{\ossb}[UprightFont={* Semibold}]{Open Sans} @@ -418,8 +418,38 @@ placés dans la version texte du mail. [Figures~\ref{hbs2a} et \ref{hbs2b}] Une fois que le prototype me donnait des résultats satisfaisants, j'ai pu passer à l'implémentation au propre du système d'envoi de mails dans \entity{Mint Service}. +Cette première implémentation devait faire l'envoi de mail en deux étapes: -J'ai d'abords créé et implémenté une librairie permettant de compiler +\begin{enumerate} + \item Les mails sont chargés et sont rendus, puis sont mises en lignes sur \entity{Amazon SES} en tant que \og templates \fg \cite{amazonsestemplate} + \item Les mails sont ensuite envoyés en instructant à \entity{Amazon SES} de faire le rendu et l'envoi d'une des \term{templates} à l'adresse mail voulue, avec les données voulues +\end{enumerate} + +J'ai d'abords créé et implémenté une librairie permettant de compiler du code \entity{Handlebars} +ainsi que des composants en format HTML et en format texte, nommée \texttt{handlebars-generator}. Cette librairie ne s'occupe pas du +chargement des fichiers, ni de l'envoi des mails, et est implémentée sans framework, +ce qui permet de la réutiliser dans le futur pour d'autres projets. + +Puis, j'ai créé et implémenté une librairie Nest.JS nommée \texttt{mailing-nest} qui s'occupe de: + +\begin{itemize} + \item Charger les composants et les emails depuis un dossier donné + \item Transformer ceux-cis avec \texttt{handlebars-generator} en HTML et en texte + \item Mettre en ligne des \term{templates} pour utiliser le service d'envoi d'emails personalisés d'\entity{Amazon} + \item Envoyer les \term{templates} avec les informations de l'utilisateur dedans +\end{itemize} + +Afin de pouvoir tester le fonctionnement de la librairie \texttt{mailing-nest}, +j'ai également créé une petite application Nest.JS qui affiche dans le navigateur les emails en format HTML et en format texte. +Cette application permet aussi de développer rapidement les emails sans devoir passer par Amazon pour tester +les modifications. + +% TODO: screenshots + +Enfin, j'ai implémenté un module Nest.JS dans l'application \entity{Mint Service}, +qui charge le module de \texttt{mailing-nest} avec en paramètre le chemin des emails pour \entity{Mint}. +Ce module est importé à plusieurs endroits dans le code, et expose des méthodes dans son service permettant +de convertir les entités de \entity{Mint Service} au format attendu par les emails. \begin{figure}[H] \includegraphics[width=\textwidth]{mailingnest}