Comment envoyer un e-mail en utilisant Codeallumeur

⚡ Résumé intelligent

CodeL'envoi d'e-mails avec Igniter utilise la bibliothèque Email intégrée au framework pour acheminer les messages via SMTP ou le serveur de messagerie local. Cet exemple crée un fichier de configuration d'e-mail, une vue de formulaire de contact et un contrôleur qui lit les données saisies dans le formulaire et envoie le message.

  • 📧 Bibliothèque intégrée : La bibliothèque Email permet d'envoyer des e-mails avec un minimum de code et prend en charge les protocoles de transport SMTP, Sendmail et PHP.
  • ⚙️ Configuration centrale : Un fichier de configuration email.php personnalisé stocke le protocole, l'hôte, le port, l'utilisateur et le mot de passe afin que les paramètres restent au même endroit.
  • (I.e. Identifiants SMTP : Des valeurs valides pour smtp_host, smtp_user et smtp_pass sont requises ; des paramètres factices ne permettront jamais d'envoyer un véritable e-mail.
  • 📝 Formulaire au contrôleur : Une vue de contact collecte le destinataire, l'objet et le message, que le contrôleur lit avec la bibliothèque d'entrée.
  • 📤 Flux d'envoi : Le contrôleur définit l'expéditeur, le destinataire, le sujet et le message, puis appelle la fonction send() et affiche un rapport de débogage en cas d'échec.
  • (I.e. HTML et fichiers : En passant au format HTML et en appelant la fonction attach(), vous pouvez envoyer des messages formatés avec des pièces jointes.
  • 🤖 Assistance IA : Les outils d'IA peuvent générer le contrôleur d'e-mail, valider les données de formulaire et diagnostiquer les erreurs de connexion SMTP à partir des informations du débogueur.

CodeIgniter envoie un e-mail

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 et envoyer des factures et des reçus aux clients. 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 pour l'envoi d'e-mails. Cela pourrait être Gmail Paramètres SMTP ou paramètres SMTP de votre hôte
  • 'smtp_host' => 'smtp.example.com' spécifie le serveur SMTP. Par exemple, si vous souhaitez utiliser Gmail vous auriez alors quelque chose comme smtp.gmail.com
  • 'smtp_port' => 465, un port ouvert sur le serveur SMTP spécifié et configuré pour le courrier électronique 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'adresse e-mail de l'utilisateur SMTP spécifié
  • 'smtp_crypto' => 'ssl', spécifie la méthode de chiffrement à utiliser, c'est-à-dire ssl, tls etc.
  • 'mailtype' => 'text', définit le type de courrier électronique à utiliser. Il peut s'agir de texte brut ou de 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 : si la valeur est TRUE, le retour à la ligne automatique est activé. Si la valeur est FALSE, le retour à la ligne automatique est désactivé.

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 dans 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(0)?>" 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 disposons d'un formulaire HTML basique qui accepte l'adresse e-mail, l'objet et le message, puis transmet les paramètres à la route de messagerie.

CodeContrôleur de messagerie Igniter

Créons maintenant le contrôleur qui gérera l'envoi des e-mails.

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
    • $subject = $this->input->post('subject'); définit l'objet de l'e-mail à 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
    • Si la fonction `send()` est appelée, l'envoi de l'e-mail est tenté. En cas de succès, le message « Votre e-mail a bien été envoyé » s'affiche ; sinon, des informations de débogage sont affichées concernant l'éventuelle erreur.

Définissons maintenant les itinéraires de messagerie.

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 contact dans le navigateur web.

Commençons par démarrer le serveur PHP intégré.

Ouvrez le terminal ou l'invite de commandes et accédez au répertoire racine de votre application. Dans mon cas, il se trouve sur le lecteur C:\Sites\ci-app.

cd C:\Sites\ci-app

Démarrez le serveur à l'aide de la commande suivante

php -S localhost:3000

Charger les éléments suivants URL dans votre navigateur Web : http://localhost:3000/send-email

Vous devriez pouvoir voir le formulaire suivant

Itinéraires de courrier électronique

Saisissez l'adresse e-mail du destinataire, l'objet et le contenu du message, puis cliquez sur « Envoyer ». Si votre configuration de messagerie est correcte, un message de confirmation s'affichera.

Comment envoyer des e-mails HTML et des pièces jointes dans Codeallumeur

Cette même bibliothèque de messagerie permet d'envoyer des messages et des fichiers richement formatés. Deux petites modifications suffisent pour transformer l'exemple en texte brut ci-dessus en un courriel HTML avec pièce jointe.

$this->email->set_mailtype('html');
$this->email->message('<h3>Welcome</h3><p>Thanks for joining us.</p>');
$this->email->attach('/path/to/report.pdf');
  • définir_mailtype('html'): indique à la bibliothèque que le corps du message contient du code HTML, afin que les balises telles que les titres et les liens s'affichent dans la boîte de réception du destinataire.
  • attacher(): ajoute un fichier provenant d'un chemin serveur au message ; appelez cette fonction une fois pour chaque fichier avant send().

N'oubliez pas que les courriels HTML doivent toujours inclure une alternative en texte brut, et que les pièces jointes volumineuses peuvent être rejetées par les serveurs de messagerie stricts.

FAQ

En général, l'hôte local ne possède pas de serveur de messagerie ; le protocole de messagerie échoue donc silencieusement. Passez au protocole SMTP et indiquez un hôte, un utilisateur et un mot de passe SMTP valides, ou utilisez un service tel que… Mailpiège pour les tests locaux.

Configurez smtp_host sur smtp.gmail.com, smtp_port sur 465 avec SSL et smtp_user avec votre nom d'utilisateur. Gmail adresse. Utilisez une adresse. Google Mot de passe de l'application plutôt que votre mot de passe habituel, car Gmail bloque les connexions par mot de passe basique.

Le protocole SMTP utilise la fonction `mail()` de PHP, `sendmail` appelle le binaire local du serveur et `smtp` se connecte à un serveur de messagerie externe avec des identifiants. SMTP est le plus fiable pour la livraison et l'authentification.

Oui. L'IA peut créer le contrôleur, ajouter la validation du formulaire pour le destinataire et l'objet, et inclure la gestion des succès et des erreurs. RevVérifiez les paramètres SMTP et ajoutez une limitation de débit avant de l'utiliser en production.

Oui. Collez le résultat de print_debugger(), et l'IA pourra interpréter les échecs de négociation SMTP, les erreurs d'authentification ou les problèmes de port, puis recommander les valeurs d'hôte, de port ou de chiffrement corrigées à essayer.

Résumez cet article avec :