Envoyer un email avec JMeter via son élément Requête SMTP

Ce billet est un petit « howto » pour vous montrer comment utiliser JMeter pour envoyer un email (courriel), ici en utilisant le serveur de messagerie SMTP de Google Mail.

Pour rappel, le SMTP (Simple Message Transfer Protocol) est le protocole normalisé d’échange de message électronique (email). Dans JMeter depuis la version 2.4, un nouvel échantillon appelé Requête SMTP a été ajouté pour avoir un client SMTP qui envoi donc un email.

Bien entendu, JMeter étant un outil de test de charge, avec cet échantillon, on peut faire un test de charge sur un serveur de messagerie franchement installé pour vérifier sa tenue de charge et robustesse (ce qui est mon cas), on peut aussi utiliser cet échantillon SMTP pour par exemple s’envoyer un email de rapport à la fin d’un test de charge « long » (qui dure plusieurs heures ou jours), ou tout simplement dans le cadre de la mise en place d’un système d’alerte en cas de temps de réponse dégradé d’un site web (par exemple) avec un script qui s’exécute toutes les x minutes ou heures.

Revenons à notre sujet, voici notre arbre JMeter tout simple pour ce test :

Et voici l’exemple d’échantillon SMTP configuré pour envoyer un message de test en utilisant les serveurs de Gmail :

NB : ici est présenté l’échantillon SMTP de la future version 2.4.1 (en date du billet)

Rien de méchant en soit, si vous utilisez votre compte Gmail en accès SMTP/POP ou SMTP/IMAP, la plupart de ces paramètres vous rappellerons quelque chose. Sinon, voici quelques commentaires, section par section.

Section Paramètres du serveur :

Juste au-dessus de la section, il y a bien entendu la traditionnelle section d’identification de l’échantillon et le champ Commentaires.

  • Serveur : ici on indique le nom ou l’adresse IP du serveur SMTP
  • Port : il existe plusieurs ports « officiels » pour le SMTP, le premier et plus ancien est le 25, sa version avec une couche SSL pour le chiffrement du transport sur le réseau est 465 (SMTPS), et une version permettant de chiffrement la partie authentification lors de l’établissement d’une session SMTP via StartTLS est le port 587. Chez GMail, on a la possibilité d’avoir ces trois ports ouverts.

Section Paramètres du courriel :

Ici c’est assez clair pour toute personne qui a déjà envoyée un email.

Section Paramètres d’authentification :


Lors d’un envoi d’un message via SMTP, il est possible au préalable de s’identifier. C’est souvent une mesure obligatoire demandée par les serveurs de messagerie pour lutter contre le SPAM et l’usurpation d’identité d’un email. Chez Gmail, c’est obligatoire.

Section Paramètres de sécurité :

Ici, on en revient aux Ports et options : SMTP : 25, SMTPS : 465 et StartTLS : 587

  • Le port 25 n’utilise pas généralement de sécurité, donc on choisira « Pas de fonctionnalité de sécurité » si on a mis 25 dans le champ Port plus haut.
  • Le port 465 utilise la couche SSL pour sécuriser le transport sur le réseau (chiffrement), donc on cochera « Utiliser SSL »
  • Et le dernier port 587, c’est la négociation StartTLS de l’authentification, qui demandera donc de cocher « Utiliser StartTLS »
  • Les autres paramètres concerne l’option « Utiliser SSL » et sont relatives aux modes d’utilisation et de confiance des certificats SSL. Pour un serveur SMTPS ayant un certificat SSL reconnu par une autorité de certification reconnue dans JAVA (donc déjà présent dans le fichier cacerts de l’environnement JAVA), il n’y a rien besoin de cocher. Par contre, si vous utilisez un certificat SSL auto-signé ou signé par une autorité de certification non reconnue, vous avez la possibilité de faire confiance à tous les certificats ou bien d’utiliser votre propre coffre de certificat local contenant la clé publique de votre autorité de certification ou certificat serveur (au lieu donc du cacerts).
  • La petite option « Force le StartTLS » est pour donc force l’utilisation de la négociation StartTLS, souvent en conjugaison avec le port 25 (car on peut avoir du StartTLS sur le port 25).

Section Paramètres du message :

Ici c’est bien entendu le cœur de l’échantillon, avec le message à envoyer. Les champs Sujet, Message et Fichier attaché sont explicites de part leurs noms.

  • L’option « Supprimer l’entête Sujet » permet d’envoyer un message sans sujet
  • L’option « Ajouter un horodatage dans le sujet » permet d’avoir un timestamp correspondant au nombre de secondes depuis le 1er Janvier 1970 au moment de l’envoi du message
  • L’option « Envoyer le message en texte » permet de revenir à un format de message SMTP dans sa version la plus simple (format RFC 822) au lieu d’un format MIME (multipart/mixed) qui lui est plus souple pour les messages avec accents et pièce jointe.
  • Et l’option « Envoyer un message .eml » est pour envoyer un message au format EML (format d’export d’un message Outlook et utiliser dans beaucoup de client de messagerie).

Section Paramètres supplémentaires :

Deux dernières options :

  • « Calculer la taille du message » qui fait ce que son nom indique, utile notamment dans le cas des messages avec pièces jointes et pour servir ensuite dans les statistiques de JMeter
  • « Activer les traces de débogage ? » vous permettra de voir les échanges entre JMeter et le serveur SMTP sur la sortie standard (la console généralement)

Voilà, on en arrive à l’exécution de notre envoi.

Voici avec un récepteur Arbre de résultats, le résultat :


Ce sont les champs habituels de l’arbre de résultats, avec une mention pour le Message de retour, ici, indiquant : « Message successfully sent ! » signifiant la réussite de l’envoi.

On peut regarder sur l’onglet Données de réponses (et aussi Requête), on trouvera le corps du message email envoyé. Ci-dessous avec un message MIME (par défaut)


Et ici un message en texte pur (les balises MIME ont disparut).

Ceci clôture ce petit comment-faire pour envoyer un email avec JMeter. Bon courage.