E-mail

Elgg est capable d’envoyer des e-mails. Cela peut se faire directement via des fonctions comme elgg_send_email() et elgg_notify_user(), ou indirectement via le système de notifications. Vous trouverez ci-dessous un aperçu des fonctionnalités du système d’e-mails.

Courrier HTML

En tant qu’administrateur, vous pouvez configurer votre site pour que tous les e-mails sortants soient des e-mails HTML ou simplement des e-mails en texte brut. Les e-mails HTML sont activés par défaut. Lorsqu’il est activé, le contenu de l’e-mail sera enveloppé dans des éléments HTML et du CSS sera appliqué. Cela permet aux développeurs de thèmes de styliser les e-mails.

Les vues appropriées pour formater et styliser les e-mails peuvent être trouvées dans views/default/email.

Le CSS sera automatiquement intégré afin qu’il fonctionne dans la plupart des clients de messagerie. Si votre e-mail contient des images, ces images peuvent être converties en images encodées en base64 (par défaut) ou en pièces jointes. Les images converties sont le meilleur moyen d’afficher les images de manière cohérente dans divers clients.

Instead of having the message converted automatically to a HTML, you can also provide your own html_message in the params of a notification. The html_message must be a string. Elgg will automatically try to inline provided CSS present in the css param. If you do not want to inline CSS you will need to set the convert_css param to false. Below an example of a custom HTML part.

elgg_send_email([
        'from' => 'from@elgg.org',
        'to' => 'to@elgg.org',
        'subject' => 'Test Email',
        'body' => 'Welcome to the site',
        'params' => [
                'html_message' => '
                        <p>Welcome to the site</p>
                        <img src="site_logo.png"/>
                ',
                'convert_css' => true,
                'css' => 'p { padding: 10px;}'
        ],
]);

Pièces jointes

La fonction elgg_notify_user() ou les notifications en file d’attente prennent en charge les pièces jointes aux notifications par e-mail si elles sont fournies dans $params. Pour ajouter une ou plusieurs pièces jointes, ajoutez la clé attachments dans $params, qui est un tableau de pièces jointes. Une pièce jointe doit être au format suivant :

  • Un ElggFile qui pointe vers un fichier existant

  • Un tableau avec le contenu du fichier

  • Un tableau avec le chemin

    // this example is for elgg_notify_user()
    $params['attachments'] = [];

    // Example of an ElggFile attachment
    $file = new \ElggFile();
    $file->owner_guid = <some owner_guid>;
    $file->setFilename('<some filename>');

    $params['attachments'][] = $file;

    // Example of array with content
    $params['attachments'][] = [
            'content' => 'The file content',
            'filename' => 'test_file.txt',
            'type' => 'text/plain',
    ];

    // Example of array with filepath
    // 'filename' can be provided, if not basename() of filepath will be used
    // 'type' can be provided, if not will try a best guess
    $params['attachments'][] = [
            'filepath' => '<path to a valid file>',
    ];

$recipient->notify('some_action', $on_some_object, $params);
// or
elgg_notify_user($recipient, 'some_action', $on_some_object, $params);

Formatage des adresses e-mail

Elgg uses the Symfony library to help with e-mail address formatting: \Symfony\Component\Mime\Address.

// the constructor takes two variables
// first is the email address, this is REQUIRED
// second is the name, this is optional
$address = new \Symfony\Component\Mime\Address('example@elgg.org', 'Example');

// this will result in 'Example <example@elgg.org>'
echo $address->toString();

Il existe plusieurs fonctions d’aide disponibles

  • \Symfony\Component\Mime\Address::create($string) Will return an \Symfony\Component\Mime\Address class with e-mail and name set, provided a formatted string (eg. Example <example@elgg.org>)