Envoyer des mails depuis une application Dancer.
Lorsqu’on développe une application web, à un moment ou à un autre, on aura besoin d’envoyer des mails. Cela peut-être pour diverses raisons, à l’inscription pour envoyer un récapitulatif et confirmer l’inscription, pour un formulaire de contact, ou encore à la validation d’une commande, sont divers exemples possible.
Pour pouvoir gérer l’envoie de mails depuis une application Dancer facilement, il y a un module. Dancer::Plugin::Email est un bibliothèque pour Dancer initié par Al Newkirk. Depuis quelques versions Naveed Massjouni a rejoint le développement et a fait pas mal de choses. Il permet donc de gérer facilement l’envoie de mail depuis une application Dancer, en ajoutant un mot-clé email. Il dépends de Email::Stuff qui est une bibliothèque avec une approche plus décontracté pour la création et l’envoie de mail, elle a été initié par Adam Kennedy et est maintenant maintenu par Ricardo Signes.
Comme pour tous plugins nécessitant une configuration c’est dans le fichier config.yml à la racine de l’application que ça ce passe. Dans l’exemple, sera utilisé une adresse de type gmail, ça sera donc les serveurs smtp de google qui seront utilisé. Il est bien-sûr tout à fait possible d’utiliser tout autre service, ou un serveur local.
Email: debug: 1 ssl: 1 driver: smtp host: smtp.gmail.com port: 465 user: monadresse@gmail.com pass: mon_mot_de_passe headers: X-Mailer: Monsupersite X-Accept-Language: fr |
L’option debug permet d’avoir une trace complète des actions effectuées pour contacter le serveur, très pratique en période de développement ou encore si mail n’arrive pas à destination pour en connaître la raison. Les options ssl, driver, et host se passe de commentaire. Le port à utiliser, ici 465, car en mode ssl. Le nom d’utilisateur sur le serveur, dans le cas d’une adresse gmail ça représente l’adresse complète, le mot de passe pour s’identifier sur le serveur. Ensuite les headers, lorsqu’ils sont communs à tous les mails, il est possible de le spécifier dans la configuration, ici le mailer qui peut-être le nom du site par exemple, et la langue qui est fr.
Ensuite dans le code perl de notre interface, il sera donc possible d’utiliser le mot-clé mail pour envoyer le mail.
post '/inscription' => sub { my $mail = email { to => params->{email}, subject => 'Inscription à mon super site', message => $msg, }; if ( $mail->{type} eq 'failure' ) { debug "Mail non-envoyé $msg->{string}"; } else { redirect uri_for(/merci); } } |
Tout simplement, il est possible de spécifier des paramètres en plus pour l’envoie du mail comme le type, cc, attach etc… Dans notre exemple on récupère simplement l’adresse mail rempli dans le formulaire, on indique un sujet en dur, et le contenu du message qui est stocké dans une variable. Si une erreur se produit, on log l’erreur avec la raison, et sinon on redirige l’utilisateur sur une autre page.
En conclusion, rien de bien compliqué pour gérer l’envoie de mail depuis une application Dancer. Référez vous à la documentation si vous avez besoin de plus d’informations.