# Envoyer les e-mails de WordPress avec Emailit

> Faites passer les e-mails de WordPress, de WooCommerce et des formulaires de contact par le SMTP d’Emailit avec WP Mail SMTP ou un petit plugin, en utilisant une clé API comme mot de passe.

WordPress envoie les réinitialisations de mot de passe, les commandes WooCommerce et les messages des formulaires de contact avec `wp_mail()`, qui utilise par défaut la configuration e-mail du serveur et finit souvent dans les spams. Ce guide fait passer ces e-mails par le relais SMTP d’Emailit, soit avec le plugin WP Mail SMTP, soit avec quelques lignes de code.

## Prérequis

- Un accès administrateur à votre site WordPress.
- Un [domaine d’envoi vérifié](/fr/docs/domains/add-a-domain/), par exemple `acme.com`. L’adresse d’expéditeur de votre site doit l’utiliser.
- Une [clé API](/fr/docs/developers/api-keys/). Créez une clé **Sending Only** limitée à votre domaine, nommée par exemple `wordpress-acme`, pour qu’un paramètre de plugin divulgué ne puisse servir à rien d’autre.
- Tant que votre espace de travail n’a pas l’[accès production](/fr/docs/workspaces/production-access/), vous ne pouvez envoyer qu’aux adresses e-mail des comptes des membres de l’espace de travail. Testez avec votre propre adresse.

## Paramètres SMTP

Voici les valeurs à saisir dans n’importe quel plugin SMTP :

| Paramètre | Valeur |
| --- | --- |
| Hôte SMTP | `smtp.emailit.com` |
| Chiffrement | TLS (STARTTLS) |
| Port SMTP | `587` |
| Authentification | Activée |
| Nom d’utilisateur SMTP | `emailit` |
| Mot de passe SMTP | Votre clé API (`secret_…`) |
| Adresse d’expéditeur | Une adresse de votre domaine vérifié, par exemple `hello@acme.com` |

Si votre hébergeur bloque le port 587, utilisez `2525` ou `2587` avec TLS, ou `465` avec SSL. Consultez [Paramètres SMTP](/fr/docs/smtp/settings/).

## Configurer WP Mail SMTP

[WP Mail SMTP](https://wordpress.org/plugins/wp-mail-smtp/) est un plugin gratuit qui remplace le transport d’e-mails de WordPress. Les autres plugins SMTP, comme FluentSMTP ou Post SMTP, utilisent les mêmes paramètres avec des libellés légèrement différents.

1. **Installez le plugin.** Dans WordPress, accédez à **Plugins > Add New**, recherchez **WP Mail SMTP**, puis installez-le et activez-le. Ignorez l’assistant de configuration s’il s’ouvre : vous pouvez tout configurer sur la page des paramètres.

2. **Définissez l’expéditeur.** Ouvrez les paramètres du plugin. Définissez **From Email** sur une adresse de votre domaine vérifié et activez **Force From Email**, pour que tous les plugins envoient depuis cette adresse. Définissez **From Name** sur le nom de votre site ou de votre entreprise.

3. **Choisissez Other SMTP.** Sous **Mailer**, choisissez **Other SMTP**.

4. **Saisissez le serveur.** Définissez **SMTP Host** sur `smtp.emailit.com`, **Encryption** sur **TLS** et **SMTP Port** sur `587`. Laissez **Auto TLS** activé.

5. **Saisissez les identifiants.** Activez **Authentication**. Définissez **SMTP Username** sur `emailit` et **SMTP Password** sur votre clé API. Enregistrez les paramètres.

6. **Envoyez un test.** Utilisez l’outil **Email Test** du plugin pour envoyer un message à votre propre adresse. Il apparaît dans **Email API → Emails** en quelques secondes.

### Garder la clé hors de la base de données

WP Mail SMTP peut lire ses paramètres depuis des constantes : la clé API se trouve alors dans `wp-config.php` plutôt que dans la base de données. Ajoutez ces lignes au-dessus de `/* That's all, stop editing! */` :

```php title="wp-config.php"
define( 'WPMS_ON', true );
define( 'WPMS_MAILER', 'smtp' );
define( 'WPMS_SMTP_HOST', 'smtp.emailit.com' );
define( 'WPMS_SMTP_PORT', 587 );
define( 'WPMS_SSL', 'tls' );
define( 'WPMS_SMTP_AUTH', true );
define( 'WPMS_SMTP_AUTOTLS', true );
define( 'WPMS_SMTP_USER', 'emailit' );
define( 'WPMS_SMTP_PASS', 'secret_••••••••••••••••••••••••••••••••' );
define( 'WPMS_MAIL_FROM', 'hello@acme.com' );
define( 'WPMS_MAIL_FROM_FORCE', true );
define( 'WPMS_MAIL_FROM_NAME', 'Acme' );
```

La page des paramètres affiche alors ces valeurs comme verrouillées. Consultez la documentation du plugin si un champ ne prend pas en compte sa constante.

## Configurer sans plugin

Si vous préférez ne pas installer de plugin, ajoutez un plugin must-use qui configure le PHPMailer intégré de WordPress. Définissez la clé dans `wp-config.php` :

```php title="wp-config.php"
define( 'EMAILIT_API_KEY', 'secret_••••••••••••••••••••••••••••••••' );
```

Créez ensuite ce fichier :

```php title="wp-content/mu-plugins/emailit-smtp.php"
<?php
/**
 * Plugin Name: Emailit SMTP
 * Description: Sends all WordPress email through the Emailit SMTP relay.
 */

add_action( 'phpmailer_init', function ( $phpmailer ) {
    $phpmailer->isSMTP();
    $phpmailer->Host       = 'smtp.emailit.com';
    $phpmailer->Port       = 587;
    $phpmailer->SMTPSecure = 'tls';
    $phpmailer->SMTPAuth   = true;
    $phpmailer->Username   = 'emailit';
    $phpmailer->Password   = EMAILIT_API_KEY;
} );

add_filter( 'wp_mail_from', fn () => 'hello@acme.com' );
add_filter( 'wp_mail_from_name', fn () => 'Acme' );
```

Les fichiers de `mu-plugins` se chargent automatiquement et ne peuvent pas être désactivés depuis l’écran d’administration.

## Recevoir des webhooks

La plupart des sites n’ont pas besoin de webhooks. Si vous voulez réagir aux rebonds ou aux plaintes, par exemple pour signaler l’adresse d’un client WooCommerce, enregistrez une route REST et vérifiez la signature. Enregistrez le secret de signature du webhook dans `wp-config.php` sous le nom `EMAILIT_WEBHOOK_SECRET` :

```php title="wp-content/mu-plugins/emailit-webhooks.php"
<?php
add_action( 'rest_api_init', function () {
    register_rest_route( 'emailit/v1', '/webhook', [
        'methods'             => 'POST',
        'permission_callback' => '__return_true',
        'callback'            => function ( WP_REST_Request $request ) {
            $payload   = $request->get_body();
            $timestamp = (string) $request->get_header( 'x-emailit-timestamp' );
            $signature = (string) $request->get_header( 'x-emailit-signature' );
            $expected  = hash_hmac( 'sha256', $timestamp . '.' . $payload, EMAILIT_WEBHOOK_SECRET );

            if ( abs( time() - (int) $timestamp ) > 300 || ! hash_equals( $expected, $signature ) ) {
                return new WP_Error( 'invalid_signature', 'Invalid signature', [ 'status' => 401 ] );
            }

            foreach ( json_decode( $payload, true ) as $event ) {
                if ( 'email.bounced' === $event['type'] ) {
                    // Flag $event['data']['object']['to'].
                }
            }

            return new WP_REST_Response( null, 200 );
        },
    ] );
} );
```

Faites pointer le [webhook](/fr/docs/webhooks/set-up/) vers `https://acme.com/wp-json/emailit/v1/webhook`. C’est la vérification de la signature qui protège la route : ne la supprimez pas.

## Conseils pour la production

- **Forcez l’adresse d’expéditeur.** Les plugins WooCommerce, de formulaire de contact et d’adhésion définissent souvent leur propre expéditeur. Forcer une adresse d’expéditeur sur votre domaine vérifié évite les erreurs `530 From/Sender domain is not verified`.
- **Consultez les logs en cas d’échec.** **Email API → Logs** affiche chaque connexion SMTP et chaque message avec son code de statut, filtrés par clé API.
- **Surveillez vos limites.** Par défaut, les nouveaux espaces de travail peuvent envoyer 2 e-mails par seconde et 5 000 par jour. Une grosse vente WooCommerce ou un plugin de newsletter peut atteindre ces limites ; pour les relever, consultez [Limites](/fr/docs/limits/).
- **N’envoyez pas de newsletters via wp_mail.** Pour les e-mails marketing envoyés à une liste, utilisez les [campagnes](/fr/docs/campaigns/), qui gèrent pour vous les liens de désinscription et les listes de contacts.

## Dépannage

| Symptôme | Cause | Solution |
| --- | --- | --- |
| `535 Authentication failed` | Le mot de passe n’est pas une clé API valide. | Collez la clé complète, avec `secret_`, et utilisez `emailit` comme nom d’utilisateur. |
| `530 From/Sender domain is not verified for this workspace` | L’adresse d’expéditeur n’appartient pas à un domaine vérifié. | Définissez et forcez une adresse d’expéditeur sur votre domaine vérifié. |
| `530 API key is restricted to sending domain` | La clé est limitée à un autre domaine. | Utilisez une adresse d’expéditeur du domaine de la clé, ou une autre clé. |
| Délai de connexion dépassé | Votre hébergeur bloque le port. | Essayez le port `2525` ou `2587` avec TLS, ou demandez à votre hébergeur d’autoriser le SMTP sortant. |
| `550 Unverified workspaces can only send to workspace members' account emails` | L’espace de travail n’a pas encore l’accès production. | [Demandez l’accès production](/fr/docs/workspaces/production-access/). |

Pour en savoir plus, consultez [Dépannage SMTP](/fr/docs/smtp/troubleshooting/).

## Étapes suivantes

  - [Paramètres SMTP](/fr/docs/smtp/settings/): Ports, TLS et identifiants.
  - [Bonnes pratiques de délivrabilité](/fr/docs/deliverability/best-practices/): Évitez que vos e-mails arrivent dans les spams.
  - [Statuts des e-mails](/fr/docs/logs/email-statuses/): La signification de chaque statut de la liste des e-mails.
  - [Clés API](/fr/docs/developers/api-keys/): Portées, limitation à un domaine et rotation.

---
Source: https://emailit.com/fr/docs/frameworks/wordpress/
