Newsletter

Avant de concevoir une newsletter, il convient de maitriser la fonction mail(). Quelques rappels :

Envoi d'un email en texte brut

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
</head>

<body>
    <h1>Envoi d'un email en texte brut</h1>
    <p>
    <?php
    $message = 'Madame, Monsieur,

    Voici un message en texte brut.

    Cordialement,
    Jules';

    $retour = mail('destinataire@free.fr', 'Email en texte brut', $message, 'From:expediteur@free.fr');
    if ($retour)
        echo 'L'email en texte brut a bien été envoyé.';
    ?>
    </p>
</body>

</html>

Notez que les retours à la ligne du message seront pris en compte dans l'email expédié, ce qui est trÚs pratique.

Envoi d'un email au format HTML

Pour envoyer un email au format HTML, il faut mettre l'entĂȘte de l'email au format MIME (Multipurpose Internet Mail Extensions) qui permet Ă  l'email de gĂ©rer des codages plus complexe que le basique ASCII.
Attention : les guillemets doubles autour des "\r\n" sont indispensables. Il permettent de gĂ©nĂ©rer un caractĂšre de retour Ă  la ligne dans l'entĂȘte de l'email.

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
</head>

<body>
    <h1>Envoi d'un email en HTML</h1>
    <p>
    <?php
    $entete  = 'MIME-Version: 1.0' . "\r\n";
    $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $entete .= 'From: Expéditeur <expediteur@free.fr>' . "\r\n";

    $message = '<h1>Les livres sont arrivés</h1>
    <p>Nouvel arrivage de <strong>livres</strong> dans votre librairie préférée.</p>
    <img src="http://lesdocs.fr/livres.png">';

    $retour = mail('destinataire@free.fr', 'Email en HTML', $message, $entete);
    if ($retour)
        echo 'L'email en HTML a bien été envoyé.';
    ?>
    </p>
</body>

</html>

Newsletter élaborée

Pour commencer, nous allons créer une table contenant une liste d'emails. Un seul champ peut suffire et vous pouvez définir l'email comme clef primaire du fait de son caractÚre unique.

newsletter

Dans le code ci-dessous, nous allons lire et stocker une lettre au format HTML dans une variable, puis nous allons l'expédier à une liste d'emails situés dans une table MySQL.

La lettre à expédier au format HTML :

lettre.html

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Newsletter</title>
</head>

<body>
    <h1>Les livres sont arrivés</h1>
    <p>Nouvel arrivage de <strong>livres</strong> dans votre librairie préférée.</p>
    <img src="http://lesdocs.fr/livres.png">
</body>

</html>

Il suffira de lancer la page ci-dessous pour expédier la lettre à tous les abonnés.

newsletter.php

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Newsletter HTML</title>
</head>

<body>
    <h1>Envoi de la newsletter</h1>
    <p>La newsletter a été envoyée au emails suivants :</p>
    <p>
    <?php
    $entete  = 'MIME-Version: 1.0' . "\r\n";
    $entete .= 'Content-type: text/html; charset=utf-8' . "\r\n";
    $entete .= 'From: Jules <jules@free.fr>' . "\r\n";

    $message = file_get_contents('lettre.html');

    $mysqli = new mysqli('localhost', 'root', 'root', 'essai');
    $sql = 'SELECT emails FROM newsletter';
    $resultat = $mysqli -> query($sql);
    while ($ligne = $resultat -> fetch_assoc()) {
        $retour = mail($ligne['emails'], 'Newsletter', $message, $entete);
        if ($retour)
            echo $ligne['emails'] . '<br>';
    }
    ?>
    </p>
</body>

</html>

Voici quelques rĂšgles d'intĂ©grations pour l'email : http://email-a-table.fr/ressources-techniques/regles-dintegration

Articles connexes