Envoyer un email avec l’API PostMark

Dans ce tutoriel nous allons regarder comment envoyer un email avec l’API de Postmark pour PHP.

Dans l’article précédent nous avons configuré WordPress pour utiliser PostMark lors de l’envoi d’email. Pour une simple application web qui n’utilise pas WordPress, nous allons maintenant coder un simple envoi d’email avec la trousse à outils PHP fourni par PostMark:

https://github.com/ActiveCampaign/postmark-php/wiki/Getting-Started

Etape 1 : Installation du SDK

Vous devez avoir accès par une interface ou via les lignes de commande à Composer, le gestionnaire de paquets pour PHP

composer require wildbit/postmark-php

Etape 2 : Récupérer les informations nécessaires

2.1 Le jeton serveur (Token)

Vous aurez besoin du jeton utilisé avec votre compte. Il est possible de le récupérer depuis l’onglet « API Tokens » de votre « Server« .

PostMark Server Panel API Token
Le jeton est une série de chiffres et de lettres séparés par des tirets

2.2 L’email de l’expéditeur

Vous aurez aussi besoin de l’identifiant de l’expéditeur. Il s’agit de l’adresse email utilisée sur la page « Sender Signatures« . Si vous avez plusieurs signatures et plusieurs serveurs, pensez-bien à utiliser celle correspondante au domaine de votre serveur !

PostMark Server Panel API Token
L'expéditeur est identifié par son adresse email

Etape 3 : Script PHP

Une fois le composant installé et les informations nécessaires vous pouvez utiliser le snippet indiqué sur la page « Read me » (Lisez-moi) du répertoire GitHub.
Voici ci-dessous une version légèrement adaptée pour une utilisation plus souple :

require_once "./vendor/autoload.php";
 
# Remplacer la valeur suivante avec le jeton récupéré à l'étape numéro 2.1
define( 'POSTMARK_TOKEN', '1a2b3c4d5e6f7g8h9i0j-1234-5678-abcd-efgh-1a2b3c4d5e6f7g8h9i0j' );
# Remplacer la valeur suivante avec l'adresse email récupérée à l'étape numéro 2.2
define( 'POSTMARK_SENDER', 'test@example.com' );
 
try {
  $client = new \Postmark\PostmarkClient( POSTMARK_TOKEN );
  $sendResult = $client->sendEmail(
    POSTMARK_SENDER, # Adresse de l'expéditeur (doit être configuré dans PostMark)
    "ben@example.com", # Adresse du destinaire
    "Hello from Postmark!", # Objet du message
    "This is just a friendly 'hello' from your friends at Postmark. Is it working dude?" # Corps du message
  );
  // Récupérer l'identifiant du message dans la réponse
  echo $sendResult->MessageID;
} catch( \Postmark\Models\PostmarkException $ex ) {
  // If the client is able to communicate with the API in a timely fashion,
  // but the message data is invalid, or there's a server error,
  // a PostmarkException can be thrown.
  echo $ex->httpStatusCode;
  echo $ex->message;
  echo $ex->postmarkApiErrorCode;
} catch( Exception $generalException ) {
  // A general exception is thrown if the API
  // was unreachable or times out.
}

C’est fini !

Si tout est correctement configuré, l’envoi d’email devrait s’effectuer sans soucis. 8-|