FuelPHP - Gestion des e-mails

La fonctionnalité de messagerie est la fonctionnalité la plus demandée dans un cadre Web. FuelPHP fournit une classe de courrier électronique élégante regroupée sous forme de package. Il est utilisé pour envoyer des e-mails simples en texte brut ainsi que des e-mails avancés en texte enrichi avec plusieurs pièces jointes. Il prend en charge les fonctionnalités suivantes: e-mails en texte brut, e-mails HTML, pièces jointes et pièces jointes en ligne.

Configuration

Pour activer la fonctionnalité de messagerie dans l'application, nous devons simplement charger le package de messagerie comme spécifié ci-dessous dans le fichier de configuration principal, fuel / app / config / config.php.

'always_load' => array ( 
   'packages' => array ( 
      'email', 
   ), 
),

Une autre option consiste à charger le package de courrier électronique, le contrôleur lui-même comme suit.

\Package::load('email');

Le paramètre de messagerie peut être effectué dans le fichier de configuration principal et certaines des options importantes sont les suivantes,

  • driver - Pilote de messagerie tel que smtp

  • is_html - Envoyer ou non des e-mails sous forme de contenu HTML

  • priority - Priorité de l'email

  • smtp.host - Hôte du serveur SMTP

  • smtp.port - Port du serveur SMTP

  • smtp.username - Nom d'utilisateur du serveur SMTP

  • smtp.password - Mot de passe du serveur SMTP

  • smtp.timeout - Délai d'expiration SMTP

  • smtp.starttls - Si le serveur SMTP a besoin de la commande STARTTLS

API de messagerie

Voici l'API fournie par la classe de pilote de messagerie et de messagerie.

la forge

Objectif: créer une instance de pilote de messagerie. Il crée le pilote en fonction de la configuration ou de l'entrée qu'il reçoit. Le pilote de messagerie fournit des fonctionnalités pour créer et envoyer des e-mails. Certains des pilotes de messagerie possibles sontsmtp, sendmail, mailgun, et mandrill.

  • Parameter - Aucun ou tableau de détails de configuration

  • Returns - Renvoie l'objet Email_Driver

Par exemple,

$email = \Email::forge();  
$email = \Email::forge (array( 
   'driver' => 'smtp', 
));

corps

  • Purpose - Pour définir le corps du message

  • Parameter - $ body - corps du message

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->body('Body message');  

//or pass it a View 
$email->body(\View::forge('my/view', $data);

alt_body

  • Purpose - Pour définir le corps du message alternatif

  • Parameter - $ alt_body - corps de message alternatif

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->alt_body('Body message');  

//or pass it a View 
$email->alt_body(\View::forge('my/view', $data);

priorité

  • Purpose - Pour définir la priorité du courrier

  • Parameter -

    • $priority- valeur de la priorité. Les options sont -

a. \Email::P_LOWEST 
* \Email::P_LOW 
* \Email::P_NORMAL 
* \Email::P_HIGH 
* \Email::P_HIGHEST
  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->priority(\Email::P_HIGHEST);

html_body

  • Purpose - Pour définir le corps du message au format HTML

  • Parameter -

    • $html - corps du message en HTML;

    • generate_alt - s'il faut générer un autre message;

    • auto_attach - s'il faut intégrer l'image ou non

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge();  

// Do generate the alt body, but don't auto attach images. 
$email->html_body(\View::forge('welcome/email', $data), true, false);

de

  • Purpose - Pour définir l'adresse de départ

  • Parameters -

    • $from - depuis l'adresse e-mail;

    • $name - Nom de l'expéditeur

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->from('[email protected]', 'My Name');

matière

  • Purpose - Pour définir l'objet du message

  • Parameter - $ subject - objet du message électronique

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->subject('Suject of the mail message');

à

  • Purpose - Pour définir l'adresse e-mail du destinataire

  • Parameters -

    • $email - adresse e-mail ou tableau d'adresses e-mail;

    • $name - nom du destinataire

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge();  
$email->to('[email protected]', 'My Dear Name'); 
$email->to (array( 
   '[email protected]', 
   '[email protected]' => 'My Dear friend', 
));

entête

  • Purpose - Pour définir un en-tête personnalisé pour le message électronique

  • Parameters -

    • $header - type d'en-tête ou tableau d'en-tête;

    • $value - valeur de l'en-tête

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge(); 
$email->header('X-SMTPAP', 'XXXXXXXX'); 
$email>reply_to (array( 
   'X-SMTPAP'  => 'XXXXXX', 
   'X-SMTPAP2' > 'XXXXXA',
));

attacher

  • Purpose - Pour joindre un fichier au message électronique

  • Parameters-

    • $file - chemin du fichier;

    • $inline - s'il faut joindre le fichier en ligne ou non;

    • $cid - identifiant de contenu;

    • $mime - Type MIME du fichier joint;

    • $name - remplacement du nom du fichier de pièce jointe

  • Returns - Renvoie l'instance actuelle

Par exemple,

$email = \Email::forge();
$email>attach(DOCROOT.'attachments/sample_attachment.pdf');

envoyer

  • Purpose - Pour envoyer le mail.

  • Parameter -

    • $validate - s'il faut valider les adresses e-mail

  • Returns - vrai ou faux

Par exemple,

$email = \Email::forge(); 
try{ 
   $email->send(); 

} catch(\EmailSendingFailedException $e) { 
   // The driver could not send the mail. 

} catch(\EmailValidationFailedException $e) { 
   // One or more email addresses failed validation. 
}

Exemple d'e-mail de travail

Utilisons l'API apprise dans le chapitre précédent et créons un code simple pour envoyer un message. Voici le code le plus simple pour envoyer un message.

$email = Email::forge(); 
$email->from('[email protected]', 'person1'); 
$email->to('[email protected]', 'person2'); 
$email->subject('Add something'); 
$email->body('contents of mail'); $email->send();