amsom-habitat / mailer-sender
Utilities pour les envoies de mails depuis MailerInterface
Requires
- php: >=8.1
- ext-curl: *
- ext-fileinfo: *
- symfony/mailer: ^6.1 || ^7.0 || ^8.0
- symfony/twig-bridge: ^6.1 || ^7.0 || ^8.0
README
Petit connecteur PHP pour envoyer des mails via l'API mailing d'AMSOM Habitat.
Installation
composer require amsom-habitat/mailer-sender
Configuration (2 variables d'env)
API_MAIL_URL=http://api_mailing # base de l'API mailing
API_MAIL_KEY=ma_cle_api # clé fournie par l'API (route /v2)
La gestion prod / test (redirection des mails) est désormais assurée par l'API elle-même, plus par le connecteur.
Utilisation — send()
Une seule méthode, un tableau. On ajoute une option = on ajoute une clé.
use AmsomUtilities\MailerSender;
// $mailer est injecté par Symfony (autowiring)
$res = $mailer->send([
'template' => 'basic', // nom de template, 'custom' ou 'simple'
'to' => 'locataire@example.com',
'subject' => 'Information',
'body' => ['message' => 'Bonjour, votre demande a été prise en compte.'],
]);
if (!$res['success']) {
// $res['httpStatus'], $res['error']
}
// $res['id'] = identifiant de suivi (visible sur /emails de l'API)
Champs disponibles
💡 Découverte : le tableau
array{...}dans le docblock desend()→ PhpStorm autocomplète les clés. Pour une liste à l'exécution :dump(\AmsomUtilities\MailerSender::champsDisponibles()); // clé => description, à date
| Clé | Type | Description |
|---|---|---|
template | string | Requis. Nom de template (basic, enquete, …), custom ou simple |
to | string | string[] | Requis. Destinataire — un email ou un tableau d'emails |
subject | string | Requis. Objet |
body | array | Données du template |
text | string | Contenu brut (pour template: 'simple') |
from | string | Expéditeur réel (passe par le relay interne) |
replyTo | string | Adresse de réponse (en-tête Reply-To) |
cc / cci | string[] | Copies / copies cachées |
destinataire | string | Nom affiché du destinataire |
attachments | array[] | Pièces jointes (voir ci-dessous) |
options | array | Config de template libre : logo, bonjour, signature, … |
delivery | array | mode (async/sync), retries, delayMs, timeToKeep, testMode |
Pièces jointes
'attachments' => [
// contenu déjà en base64
['filename' => 'facture.pdf', 'content' => $base64],
// OU un fichier / une URL, converti en base64 par le connecteur
['filename' => 'photo.jpg', 'content' => '/tmp/photo.jpg', 'type' => 'path'],
['filename' => 'image', 'content' => 'https://…', 'type' => 'url'],
]
Exemple custom + expéditeur + réponse
$mailer->send([
'template' => 'custom',
'to' => 'locataire@example.com',
'subject' => 'Votre dossier',
'from' => 'service-client@amsom-habitat.fr',
'replyTo' => 'contact@amsom-habitat.fr',
'body' => ['message' => 'Veuillez trouver le document ci-joint.'],
'options' => ['logo' => 'logoSyneo', 'signature' => ['nom' => 'Martin', 'prenom' => 'Claire']],
'attachments' => [['filename' => 'dossier.pdf', 'content' => '/tmp/dossier.pdf', 'type' => 'path']],
'delivery' => ['mode' => 'sync'],
]);
Valeur de retour
send() renvoie un tableau : success (bool), httpStatus (int), id (hash de suivi), status, et error en cas d'échec. Lève \RuntimeException si la config manque ou si l'appel réseau échoue.
Anciennes méthodes (dépréciées)
sendMail(), apiSendMail() et apiSendMailCustom() restent disponibles à l'identique pour compatibilité, mais ne sont plus recommandées : préférez send().