Recherche…


Remarques

Dans CodeIgniter 3, vous devez inclure le paramètre:

$config['newline'] = "\r\n";

Cela ne marchera tout simplement pas.

Si vous ne vous souciez pas des nouvelles lignes et que vous utilisez CodeIgniter 2, ce paramètre de configuration est facultatif.

Charger la bibliothèque de messagerie

Vous devez d'abord charger la bibliothèque de messagerie.

Faites-le soit dans le fichier de contrôleur qui enverra l'e-mail:

$this->load->library('email');

Ou chargez-le globalement dans le fichier autoload.php du dossier config:

$autoload['libraries'] = array('email');

Pendant que vous y êtes, vous pouvez charger l'assistant de messagerie si vous souhaitez utiliser certains raccourcis intégrés à CodeIgniter:

$autoload['helper'] = array('email');

L'assistant de messagerie peut être chargé dans le fichier Controller de la même manière que la bibliothèque de messagerie:

$this->load->helper('email');

Définissez vos paramètres de configuration du courrier électronique

Créez un nouveau fichier dans le dossier application / config nommé email.php

Définissez les paramètres d'envoi du courrier électronique. Ceux-ci se chargeront lorsque vous envoyez votre email.

$config['newline'] = "\r\n"; //You must use double quotes on this one
$config['protocol'] = 'smtp';
$config['smtp_host'] = 'ssl://smtp.gmail.com'; //Change for your specific needs
$config['smtp_port'] = 465; //Change for your specific needs
$config['smtp_user'] = '[email protected]'; //Change for your specific needs
$config['smtp_pass'] = 'yourpassword'; //Change for your specific needs
$config['charset'] = 'iso-8859-1';
$config['mailtype'] = 'text'; //This can be set as 'html' too

Créez votre email

$this->email->from('[email protected]', 'Tom Webmaster');
$this->email->to('[email protected]', 'Freddie Fakeperson');
$this->email->subject('Your Account Is Active');
$this->email->message('Welcome to our new site!');

Dans la méthode 'from', le premier paramètre est l'adresse électronique à laquelle vous envoyez, le deuxième paramètre est le nom que vous souhaitez que le destinataire voie.

Dans la méthode 'to', vous définissez à qui l'e-mail est envoyé.

La méthode 'subject' définit le sujet de l'e-mail.

La méthode 'message' définit ce qui sera dans le corps de votre email.

Chacun de ces éléments peut être une donnée envoyée à votre site par un utilisateur. Vous pouvez donc avoir une variable contenant des données postées. Donc, ils peuvent ressembler plus à ceci:

$this->email->to($email, $username);

Envoyer votre email

$sent = $this->email->send();


//This is optional - but good when you're in a testing environment.
if(isset($sent)){
    echo "It sent!";
}else{
    echo "It did not send.";
}

Envoyer un email HTML

Mais vous ne voulez pas simplement un message texte en clair. Vous voulez un joli email HTML.

Définissez votre fichier de configuration en html:

$config['mailtype'] = 'html';

Si vous souhaitez transmettre des données (comme un nom d'utilisateur par exemple) au courrier électronique HTML, placez-les dans un tableau:

$data = array('name' => $name, 
              'email' => $email,
              'phone' => $phone,
              'date' => $date);

Ensuite, lors de l'envoi, pointez votre message vers une vue. Puis transmettez-lui votre tableau de données:

$this->email->message($this->load->view('new_user',$data, true));

Dans votre application / vue, créez votre vue.

Dans ce cas, il s'appelle 'new_user.php'.

Vous pouvez le coiffer comme vous le souhaitez. Voici un exemple rapide:

<html>
<head>
    <style type='text/css'>
        body {background-color: #CCD9F9;
             font-family: Verdana, Geneva, sans-serif}

        h3 {color:#4C628D}

        p {font-weight:bold}
    </style>
</head>
<body>

    <h3>Hi <?php echo $name;?>,</h3>
    <h3>Thanks for contacting us.</h3> 

    <p>You've taken your first step into a larger world.</p>   
    <p>We really appreciate your interest.</p>

</body>
</html>

Formulaire de contact

Contrôleur (Pages.php)

public function contact()
{
    
    $this->load->library('email');
    $this->load->library('form_validation');

    //Set form validation
    $this->form_validation->set_rules('name', 'Name', 'trim|required|min_length[4]|max_length[16]');
    $this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|min_length[6]|max_length[60]');
    $this->form_validation->set_rules('message', 'Message', 'trim|required|min_length[12]|max_length[200]');

    //Run form validation
    if ($this->form_validation->run() === FALSE)
    {
        $this->load->view('contact');
    } else {

        //Get the form data
        $name = $this->input->post('name');
        $from_email = $this->input->post('email');
        $subject = $this->input->post('subject');
        $message = $this->input->post('message');

        //Web master email
        $to_email = '[email protected]'; //Webmaster email, who receive mails

        //Mail settings
        $config['protocol'] = 'smtp';
        $config['smtp_host'] = 'ssl://smtp.gmail.com';
        $config['smtp_port'] = '465';
        $config['smtp_user'] = '[email protected]'; // Your email address
        $config['smtp_pass'] = 'mailpassword'; // Your email account password
        $config['mailtype'] = 'html'; // or 'text'
        $config['charset'] = 'iso-8859-1';
        $config['wordwrap'] = TRUE; //No quotes required
        $config['newline'] = "\r\n"; //Double quotes required

        $this->email->initialize($config);                        

        //Send mail with data
        $this->email->from($from_email, $name);
        $this->email->to($to_email);
        $this->email->subject($subject);
        $this->email->message($message);
        
        if ($this->email->send())
        {
            $this->session->set_flashdata('msg','<div class="alert alert-success">Mail sent!</div>');

            redirect('contact');
        } else {
            $this->session->set_flashdata('msg','<div class="alert alert-danger">Problem in sending</div>');
            $this->load->view('contact');
        }

    }

Vues (contact.php)

<div class="container">
<h2>Contact</h2>
<div class="row">
    <div class="col-lg-6">
        <?php echo $this->session->flashdata('msg'); ?>
        <form action="<?php echo base_url('contact'); ?>" method="post">
        <div class="form-group">
            <input name="name" placeholder="Your name" type="text" value="<?php echo set_value('name'); ?>" class="form-control" />
            <?php echo form_error('name', '<span class="text-danger">','</span>'); ?>
        </div>
        <div class="form-group">
            <input name="email" placeholder="Your e-mail" type="text" value="<?php echo set_value('email'); ?>" class="form-control" />
            <?php echo form_error('email', '<span class="text-danger">','</span>'); ?>
        </div>
        <div class="form-group">
            <input name="subject" placeholder="Subject" type="text" value="<?php echo set_value('subject'); ?>" class="form-control" />
        </div>
        <div class="form-group">
            <textarea name="message" rows="4" class="form-control" placeholder="Your message"><?php echo set_value('message'); ?></textarea>
            <?php echo form_error('message', '<span class="text-danger">','</span>'); ?>
        </div>
        <button name="submit" type="submit" class="btn btn-primary" />Send</button>
        </form>
    </div>
</div>


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow