Comment envoyer un e-mail en utilisant Codeallumeur
L'email est essentiel dans les applications web. Lors de l'inscription d'un utilisateur, nous pouvons lui envoyer un email pour vรฉrifier son adresse et lui permettre de confirmer son abonnement. Nous utilisons รฉgalement l'email pour rรฉinitialiser les mots de passe oubliรฉs, envoyer des factures et des reรงus aux clients, etc. CodeIgniter nous permet d'envoyer trรจs facilement des e-mails depuis notre application grรขce ร diffรฉrentes options.
CodeIgniter possรจde une bibliothรจque de messagerie intรฉgrรฉe que nous pouvons utiliser lors de l'envoi d'e-mails.
CodeConfiguration de la messagerie Igniter
Nous avons besoin d'un endroit centralisรฉ pour gรฉrer les paramรจtres de messagerie. CodeIgniter n'est pas fourni avec un fichier de configuration pour les e-mails, nous devrons donc en crรฉer un nous-mรชmes.
Crรฉez un fichier email.php dans le rรฉpertoire application/config
Ajoutez le code suivant ร email.php
<?php defined('BASEPATH') OR exit('No direct script access allowed');
$config = array(
'protocol' => 'smtp', // 'mail', 'sendmail', or 'smtp'
'smtp_host' => 'smtp.example.com',
'smtp_port' => 465,
'smtp_user' => 'no-reply@example.com',
'smtp_pass' => '12345!',
'smtp_crypto' => 'ssl', //can be 'ssl' or 'tls' for example
'mailtype' => 'text', //plaintext 'text' mails or 'html'
'smtp_timeout' => '4', //in seconds
'charset' => 'iso-8859-1',
'wordwrap' => TRUE
);
ICI,
- 'protocol' => 'smtp', spรฉcifie le protocole que vous souhaitez utiliser lors de l'envoi d'e-mails. Il peut s'agir des paramรจtres SMTP de Gmail ou des paramรจtres SMTP de votre hรฉbergeur.
- 'smtp_host' => 'smtp.example.com', spรฉcifie l'hรดte smtp. Par exemple, si vous souhaitez utiliser Gmail, vous aurez quelque chose comme smtp.gmail.com
- 'smtp_port' => 465, un port ouvert sur l'hรดte smtp spรฉcifiรฉ qui a รฉtรฉ configurรฉ pour le courrier smtp
- 'smtp_user' => 'no-reply@example.com', l'adresse email qui sera utilisรฉe comme expรฉditeur lors de l'envoi des emails. Il doit s'agir d'une adresse e-mail valide qui existe sur le serveur
- 'smtp_pass' => '12345!', le mot de passe de l'e-mail de l'utilisateur smtp spรฉcifiรฉ
- 'smtp_crypto' => 'ssl', spรฉcifie la mรฉthode de cryptage ร utiliser, c'est-ร -dire ssl, tls, etc.
- 'email type' => 'text', dรฉfinit le type de courrier ร utiliser. Cela peut รชtre du texte brut ou du HTML selon vos besoins.
- 'smtp_timeout' => '4', spรฉcifie le temps en secondes qui doit s'รฉcouler lors de la tentative de connexion ร l'hรดte avant qu'une exception de dรฉlai d'attente ne soit levรฉe.
- 'charset' => 'iso-8859-1', dรฉfinit le jeu de caractรจres ร utiliser lors de l'envoi d'e-mails.
- 'wordwrap' => TRUE est dรฉfini sur TRUE, puis le retour ร la ligne est activรฉ. S'il est dรฉfini sur FALSE, le retour ร la ligne n'est pas activรฉ.
Note: pour envoyer des emails au travail, vous devez fournir des paramรจtres de configuration valides. Les paramรจtres factices ne pourront pas envoyer d'e-mails.
CodeAffichage du courriel Igniter
Dans cette section, nous allons crรฉer la vue qui enverra l'e-mail au destinataire.
Crรฉer un nouvel e-mail de rรฉpertoire dans application/views
Crรฉez un nouveau fichier contact.php application/views/email
Ajoutez le code suivant ร application/views/email/contact.php
<!DOCTYPE html>
<html>
<head>
<title>CodeIgniter Send Email</title>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div>
<h3>Use the form below to send email</h3>
<form method="post" action="<?=base_url('email')?>" enctype="multipart/form-data">
<input type="email" id="to" name="to" placeholder="Receiver Email">
<br><br>
<input type="text" id="subject" name="subject" placeholder="Subject">
<br><br>
<textarea rows="6" id="message" name="message" placeholder="Type your message here"></textarea>
<br><br>
<input type="submit" value="Send Email" />
</form>
</div>
</body>
</html>
ICI,
- Nous avons un formulaire HTML de base qui accepte l'e-mail, l'objet et le message, puis transmet les paramรจtres ร l'itinรฉraire de l'e-mail.
CodeContrรดleur de messagerie Igniter
Crรฉons maintenant le contrรดleur qui gรฉrera l'envoi des emails
Crรฉez un nouveau fichier EmailController.php dans application/controllers/EmailController.php
Ajoutez le code suivant ร EmailController.php
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class EmailController extends CI_Controller {
public function __construct() {
parent:: __construct();
$this->load->helper('url');
}
public function index() {
$this->load->view('email/contact');
}
function send() {
$this->load->config('email');
$this->load->library('email');
$from = $this->config->item('smtp_user');
$to = $this->input->post('to');
$subject = $this->input->post('subject');
$message = $this->input->post('message');
$this->email->set_newline("\r\n");
$this->email->from($from);
$this->email->to($to);
$this->email->subject($subject);
$this->email->message($message);
if ($this->email->send()) {
echo 'Your Email has successfully been sent.';
} else {
show_error($this->email->print_debugger());
}
}
}
ICI,
- La classe EmailController qui รฉtend CI_Controller {โฆ} dรฉfinit notre contrรดleur de messagerie qui รฉtend la classe parente CodeContrรดleur d'allumage.
- public function __construct() {โฆ} dรฉfinit le constructeur enfant qui appelle la mรฉthode constructeur parent.
- public function index() {โฆ} dรฉfinit la mรฉthode d'index qui affiche le formulaire de contact
- function send() {โฆ} dรฉfinit la mรฉthode qui envoie l'e-mail
- $this->load->config('email'); charge les paramรจtres de configuration de la messagerie
- $this->load->library('email'); charge la bibliothรจque de courrier รฉlectronique
- $from = $this->config->item('smtp_user'); obtient l'identifiant de l'expรฉditeur ร partir du fichier de configuration de messagerie que nous avons dรฉfini.
- $ร = $this->input->post('ร '); obtient la valeur ร partir du formulaire soumis
- $sujet = $this->input->post('sujet'); dรฉfinit l'e-mail soumis ร partir du formulaire
- $message = $this->input->post('message'); dรฉfinit le message รฉlectronique ร partir du formulaire
- $this->email->set_newline("\r\n"); dรฉfinit les caractรจres de nouvelle ligne pour les emails
- $this->email->from($from); dรฉfinit l'adresse e-mail de l'expรฉditeur
- $this->email->ร ($ร ); dรฉfinit l'adresse e-mail du destinataire
- $this->email->sujet($sujet); dรฉfinit le sujet de l'e-mail
- $this->email->message($message); dรฉfinit le message รฉlectronique
- if ($this->email->send()) {โฆ} tente d'envoyer l'e-mail. Si l'e-mail est envoyรฉ avec succรจs, le message Votre e-mail a รฉtรฉ envoyรฉ avec succรจs, sinon les informations de dรฉbogage sont imprimรฉes sur ce qui aurait pu mal se passer.
Dรฉfinissons maintenant les routes des e-mails
Itinรฉraires de courrier รฉlectronique
Ajoutez les routes suivantes ร application/config/routes.php
$route['send-email'] = 'EmailController'; $route['email'] = 'EmailController/send';
Nous pouvons maintenant charger le formulaire de contacts dans le navigateur Web
Commenรงons le serveur PHP intรฉgrรฉ
Ouvrez le terminal/ligne de commande et accรฉdez ร la racine de votre application. Dans mon cas, la racine se trouve dans le lecteur C:\Sites\ci-app
cd C:\Sites\ci-app
dรฉmarrez le serveur en utilisant la commande suivante
php -S localhost:3000
Chargez l'URL suivante dans votre navigateur Web : http://localhost:3000/send-email
Vous devriez pouvoir voir le formulaire suivant
Saisissez l'e-mail du destinataire, l'objet et l'e-mail, puis cliquez sur Envoyer un e-mail. Si vos configurations de messagerie sont correctement dรฉfinies, vous devriez pouvoir voir le message rรฉussi.
Rรฉsumรฉ
La bibliothรจque de courrier รฉlectronique intรฉgrรฉe nous permet d'envoyer facilement des courriers รฉlectroniques avec un minimum de code. La bibliothรจque est รฉgalement trรจs flexible dans le sens oรน vous pouvez la configurer pour rรฉpondre ร vos besoins.

