Envoi de courriels depuis un site web avec Gmail

Voici un scénario qui va vous permettre de garder le contrôle de la partie web de votre domaine internet, domicilié chez votre hébergeur (ou même sur votre serveur dédié), mais de rediriger la messagerie de ce domaine sur les serveurs de Google. Vous allez découvrir comment envoyer des courriels depuis votre site web en utilisant le service Google Apps ou Gmail comme émetteur.

Prérequis

L’intérêt de Google Apps est que vous pouvez envoyer des mails au nom de votre entreprise, et non avec une adresse Gmail comme expéditeur. Ceci dit, le scénario est le même. Si vous souhaitez utiliser un compte Google Apps, votre domaine internet doit être réservé auprès d’un registar qui vous fournit l’accès à l’administration du domaine, comme par exemple OVH, 1&1, Gandi, Godaddy et bien d’autres.

Ensuite, vous inscrivez ce domaine au service Google Apps, et disposez ainsi de plusieurs applicatifs bureautique en ligne, mais surtout, de la messagerie Gmail intégrée.

Lors de la réservation de votre service Google Apps, vous aurez créé le premier utilisateur du service, qui dispose donc d’un “nom d’utilisateur” et d’un “mot de passe“.

Ensuite, grâce aux informations d’assistance fournies dans votre espace Google Apps, vous modifiez le pointage du service de messagerie associé à ce domaine, en utilisant les serveurs MX de Google, et non plus les serveurs MX de votre hébergeur. Vous gardez néanmoins le contrôle de la partie web de votre domaine. Seule la messagerie est prise en charge par les serveurs de Google.

Votre compte Google Apps ou Gmail vous offre un nom d’utilisateur et un mot de passe pour accéder à la messagerie. Ces deux informations seront fournies en paramètres lors de l’envoi de courriel depuis votre site.

Envoyer un courriel avec Codeigniter

Pour illustrer ce scénario, nous utiliserons Codeigniter. Codeigniter est une plate-forme de développement de sites internet et d’applications pour le web, en langage PHP. Son approche modulaire construite selon la méthode MVC (Model-View-Controller) permet de séparer les trois couches principales du développement applicatif que sont :

  • la programmation des processus métiers (Controller),
  • les modèles d’affichage HTML dans les navigateurs web (View),
  • les procédures d’accès et de traitement de données (Model).

L’intérêt d’utiliser un modèle de développement est d’écrire le moins de lignes de code possible, pour un résultat optimum. Ainsi, nous n’entrerons pas dans le détail technique de la procédure d’envoi de courriel, car cette partie est gérée automatiquement par Codeigniter.

Création du controller Gmail (procédures)

Comme dans tout développement sous Codeigniter, nous commencerons par créer une nouvelle classe. Il s’agit d’un fichier que nous enregistrons sous le nom gmail.php, dans le dossier /application/controllers de votre installation Codeigniter.

Cette classe contient deux fonctions :

  • La fonction index() est exécutée par défaut lorsqu’on appelle la page correspondant au contrôleur gmail. Elle affiche le formulaire visit.php à l’écran.
  • La fonction send() récupère l’adresse email du visiteur fournie lors de la validation du formulaire, puis procède à l’envoi du mail en utilisant vos identifiants Gmail.

Création de la fonction d’affichage

Dans l’illustration ci-dessous, la fonction index (ligne 10) est la fonction par défaut lorsqu’on appelle une page sous Codeigniter.
Ainsi, l’adresse de la page web http://example/com/gmail correspond à http://example/com/gmail/index. Ici, la fonction index affiche tout simplement à l’écran le fichier visit.php (votre formulaire) que vous aurez enregistré dans le dossier /views

Création de la fonction send()

La fonction send() (ligne 15) récupère les éléments du formulaire ($_POST) et en extrait l’adresse email du visiteur en ligne 17 ($emaildest).

Le tableau $config en ligne 25 fournit toutes les informations nécessaires pour identifier la connexion au serveur de Google à partir d’un compte Gmail reconnu: l’identifiant du serveur (host), le port utilisé (465), ainsi que les identifiants (nom d’utilisateur et mot de passe) du compte Google Apps ou Gmail.

A la ligne 33, nous chargeons la librairie email fournie par Codeigniter, et nous préparons les éléments du message à envoyer.

L’envoi effectif du message a lieu avec la fonction $this->email->send() en ligne 40. Cette fonction de Codeigniter retourne une valeur booléenne selon le succès de l’opération. Si l’opération a échoué, elle affiche le message d’erreur à la ligne 41 (fonction print_debugger()). En cas de succès, un petit message apparaît à l’écran : ‘OK. Vous avez un mail !‘.

Voici donc le code. Ici, nous utilisons le domaine “example.com” que nous avons prélablement inscrit sur Google Apps.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php

class Gmail extends Controller {

  function Gmail()
  {
    parent::Controller();
  }
 
  function index()
  {
    $this->load->view('visit');
  }
 
  function send ()
  {
    if(isset($_POST)) $emaildest = $this->input->post('emaildest');
    if(!$emaildest) die('Adresse du destinataire manquante !');
   
    $message = '
    Bonjour,
    Ceci est un exemple de mail envoyé en utilisant un compte Gmail.
    '
;
   
    $config = Array(  
      'protocol' => 'smtp',  
      'smtp_host' => 'ssl://smtp.googlemail.com',  
      'smtp_port' => 465,  
      'smtp_user' => 'the-username@example.com',
      'smtp_pass' => 'the-password',
    );
   
    $this->load->library('email', $config);  
    $this->email->set_newline("\r\n");  
    $this->email->from('the-username@example.com', 'My name');  
    $this->email->to($emaildest);
    $this->email->subject('Envoi de mail depuis un compte Gmail');  
    $this->email->message($message);  
     
    if (!$this->email->send())  
      show_error($this->email->print_debugger());
    else  
      echo 'OK. Vous avez un mail !';
  }
}

Création du formulaire visiteur

Nous avons vu que la fonction index affiche une vue nommée visit.php. Nous allons maintenant créer le formulaire. Ce formulaire appellera notre fonction send().
Voici un exemple simple que vous enregistrerez sous visit.php dans le dossier /applications/views de votre installation Codeigniter:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<form method="POST" action='/gmail/send' enctype="multipart/form-data" accept-charset="UTF-8" name="submiter">
    <fieldset>
        <legend>
            Information du visiteur
        </legend>
        <label>
            Adresse email de destination
        </label>
        <input name="emaildest" id='emaildest' type="text">
        <br/>
        <input name="send" value="Envoyer un mail" type="submit">
    </fieldset>
    </p>
</form>

Utilisation de la procédure

Dans un navigateur internet, entrez l’adresse de votre site et la page permettant d’accéder au formulaire. Si votre site s’appellait example.com, cela donnerait:

a1508-codeigniter-gmail

Testez le scénario
Télécharger le dossier /application contenant les fichiers gmail.php et visit.php

Configuration de Codeigniter

Ce scénario suppose que vous avez configuré Codeigniter de la manière suivante:

  • Dans le fichier /application/config/config.php, vous avez renseigné l’adresse de votre site internet avec la variable $config['base_url']
  • Dans le fichier /application/config/config.php, vous avez effacé la mention index.php dans la variable $config['index_page'], de façon à obtenir:
    $config['index_page'] = “”;.
    Cette modification vous permet d’obtenir un adressage de vos pages web au format URL friendly.

Documentation

Pour en savoir plus sur la classe email de Codeigniter
A propos de Codeigniter
A propos de Google Apps
A propos de l’adressage de page au format URL friendly (en)

Les questions ou commentaires sont bienvenus !

This entry was posted in Techniques and tagged , , . Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.

Déposer un commentaire

Votre courriel ne sera jamais publié ni communiqué. Les champs obligatoires sont indiqués par *

*
*

Spam Protection by WP-SpamFree Plugin

Get Adobe Flash playerPlugin by wpburn.com wordpress themes
Comment deviner l'avenir ? Il change tous les jours !

This site is protected with Urban Giraffe's plugin 'HTML Purified' and Edward Z. Yang's Powered by HTML Purifier. 2058 items have been purified.