PHP avancé. Envoi d' s. IX) Envoi d' s

Documents pareils
L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

Divers éléments. Protocoles d'applications. Un agent Utilisateur. MUA - Agents Utilisateurs de Courriel. Simple Mail Transfer Protocol

Scripts courants PHP PHP VERSION 4.3

Introduction. PHP = Personal Home Pages ou PHP Hypertext Preprocessor. Langage de script interprété (non compilé)

Utilisation de l . Sommaire

Utiliser l'assistant mailing

Comment envoyer un en gardant les adresses de ses correspondants confidentielles!!!

Guide de l'utilisateur

L3 informatique TP n o 2 : Les applications réseau

StudioXine Communication & Formation

Démonstration de la mise en cache via HTML 5 sur iphone

GERER UNE CAMPAGNE (Mise à jour 04/10/2012) MENU

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutoriel d'utilisation du logiciel Thunderbird version 2.0

Gilles.Roussel univ-mlv.fr HTTP/1.1 RFC 2068

Stockage du fichier dans une table mysql:

Mail2SMS. Envoyer facilement vos SMS depuis un . Version : Revision : 12/12/2011. Page 1/8

Je communique par

"Indy\Source\Fulld7.bat" 6. Lancer à présent Delphi. Allez dans le menu "Composant" puis sur "Installer des paquets...".

TP JAVASCRIPT OMI4 TP5 SRC

Solution de gestion de newsletter 12all Version 1.0 p.montier

Jeux de caracte res et encodage (par Michel Michaud 2014)

Comment développer et intégrer un module à PhpMyLab?

Manuel d'utilisation. Module " ing "

Formulaire pour envoyer un mail

Communiquer : le mail Chèque n 7 Module 1

Pack Fifty+ Normes Techniques 2013

Module http MMS AllMySMS.com Manuel d intégration

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Initiation à la messagerie

(structure des entêtes)

Le service FTP. M.BOUABID, Page 1 sur 5

Quelques éléments de compilation en C et makefiles

FTP & SMTP. File Transfert Protocol. Deux applications fondamentales pour le réseau Internet. Un protocole d échange de fichier «au dessus» de TCP :

Protocoles Applicatifs

Services d intranet Christian Bulfone christian.bulfone@gipsa-lab.fr Master IC2A/DCISS Année 2012/2013

Mysql. Les requêtes préparées Prepared statements

Application de lecture de carte SESAM-Vitale Jeebop

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

Lire-Écrire un courriel / Pièces jointes

Dans la série LES TUTORIELS LIBRES présentés par le site FRAMASOFT. Premiers pas avec WinPT (cryptographie sous Win) EITIC

PARAMETRAGE CONSOLE ADMINISTRATION DE MESSAGERIE "VENDOME.EU" NOTICE UTILISATION

PMTIC. EPI Centre de formation TIC. rue de Franchimont, VERVIERS Tél. : 087/ GSM : 0495/

API SMS CONSEIL HTTP V2.01. Sommaire. Documentation V1.0 au 21/05/2011

A DESTINATION DES SERVICES TIERS. Editeurs d applications et ressources pédagogiques connectées à l ENT

SOLUTION D ENVOI DE SMS POUR PROFESSIONNELS

Votre adresse ... Pour consulter vos s, connectez-vous sur le site :

Dans l'article précédent, vous avez appris

Envoyer et recevoir son courrier

Programmation Web. Madalina Croitoru IUT Montpellier

Documentation pour l envoi de SMS

Gestion de Chambres d'hôtes Logiciel GESTCHA

LISTES DE DISTRIBUTION GÉRÉES PAR SYMPA DOCUMENT EXPLICATIF DE L'INTERFACE WEB À L'INTENTION DES ABONNÉS

Documents électroniques - Confirmations

News - Letter, comment ça marche? Agen, 03 décembre D'après un powerpoint du Pôle Normand des Echanges Electroniques. avec sa newsletter

FTP & SMTP. Deux applications fondamentales pour le réseau Internet.

EDIWEB - Guide de démarage rapide

HTTP. Technologies du Web. Programmation Web côté serveur. Mastère spécialisé Management et nouvelles technologies, 16 novembre 2009

Le courrier électronique

Les outils de gestion de campagne d marketing

Hébergement de site web Damien Nouvel

Le codage informatique

Avantages de l'archivage des s

R01 Import de données

Audit SEO. I / Les Tranquilles d Oléron

DECOUVERTE DE LA MESSAGERIE GMAIL

Mysql avec EasyPhp. 1 er mars 2006

Guide utilisateur : Directmail et newsletter

STID 2ème année : TP Web/PHP

Procédures Stockées WAVESOFT ws_sp_getidtable Exemple : ws_sp_getnextsouche Exemple :... 12

Les solutions de paiement CyberMUT (Crédit Mutuel) et CIC. Qui contacter pour commencer la mise en place d une configuration de test?

Manuel du composant CKForms Version 1.3.2

MODULE Mailing - Newsletter

OPTIONS INTEGREES. des s des fax via internet (par ) des messages vocaux des messages SMS des T-mails ( s en synthèse vocale)

RECOMMANDATION 27 EFFICACITE DE LA COMMUNICATION, ENTRE LES CANAUX DE DISTRIBUTION ET LES ASSUREURS, ET RECIPROQUEMENT.

Traitement de texte : Quelques rappels de quelques notions de base

inviu routes Installation et création d'un ENAiKOON ID

Conditions Générales Contact Diffusion SMS

Guide de configuration de la Voix sur IP

Acropole Acropole Gestion du courrier - Archivage

Navigation dans Windows

GUIDE D INSTALLATION. Portaneo Enterprise Portal version 4.0

Module Communication - Messagerie V6. Infostance. Messagerie

Manuel utilisateur. des. listes de diffusion. Sympa. l'université Lille 3

Documentation technique template Mailing list. Debian 5.0 ispconfig3

Hébergement WeboCube. Un système performant et sécurisé. Hébergement géré par une équipe de techniciens

SYSTEME DE GESTION DES ENERGIES EWTS EMBEDDED WIRELESS TELEMETRY SYSTEM

Ateliers de formation Internet. L ing

SOLUTIONS INTERNET KIOSQUES INTERACTIFS

Un duo de choc : DocuWare et Microsoft Outlook

Chapitre : Les Protocoles

CASE-LINUX MAIL. Introduction. CHARLES ARNAUD Linux MAIL

PARAMÉTRAGE BOSCH SOMMAIRE DE LA CAMÉRA OSCH DINION-IP-NWC : CONFIGURATION POUR DE L ENREGISTREMENT PERMANENT... 2

Tutorial Foxmail 5.0

Le courrier électronique

Tutoriel - flux de facturation

I Pourquoi une messagerie?

Initiation à la programmation en Python

Manuel d intégration API FTP SMS ALLMYSMS.COM

Transcription:

IX)

L'envoi d'emails en PHP est relativement simple et facile à mettre en oeuvre. C'est la fonction mail qui s'occupe de gérer ça. Syntaxe mail(destinataire, sujet, message,header) Note : Il existe un 5ième paramètre optionnel que nous ne verrons pas destinataire la ou les adresses destinataires sujet le titre de votre email message le corps du message à proprement parler header paramètres optionnels permettant de donner des informations supplémentaires. Il existe 2 formats d'emails : texte et html.

IX.1) Email de type ''texte'' Les plus faciles à mettre en place mais relativement limités en terme de rendu puisqu'il ne permettent d'afficher que du texte. Les seules mises en forme possibles sont des sauts de ligne (\r\n) ou des tabulations (\t). Pour ce type d'email on peut très bien ne pas rajouter d'informations dans le header. (Le minimum est généré automatiquement). Exemple : $destinataire = 'toto@gmail.com'; $titre = 'Salut ceci est le titre'; $message = "Ici le message avec un saut de ligne\r\n"; $message.= "\tet ici la suite du message avec une tabulation au début"; mail($destinataire, $titre, $message);

La fonction mail revoie une valeur booléenne true si l'email a été envoyé avec succès (ce qui ne veut pas forcément dire qu'il est arrivé à bon port), false dans le cas contraire. On prendra donc l'habitude de tester cette valeur de retour afin de s'assurer du bon déroulement. // initialisation $destinataire = 'toto@gmail.com'; $titre = 'Salut ceci est le titre'; $message = "Ici le message avec un saut de ligne\r\n"; $message.= "\tet ici la suite du message avec une tabulation au début"; // envoi du courrier $envoi = mail($destinataire, $titre, $message); // vérification if ($envoi == true) { echo 'courrier correctement envoyé'; } else { echo 'problème d'envoi...'; }

IX.1.1) Informations complémentaires Il sera cependant préférable de venir compléter les informations par défaut du header. Nous allons ainsi pouvoir préciser d'où part le courrier, mettre d'autres destinataires en copy caché et bien d'autres choses. Voyons en quelques unes classiques : Cc: Bcc: From: Reply-to: ''Carbon Copy'', ajoute des adresses en copie ''Blind Carbon Copy'', pareil mais en copie cachée précise l'adresse de l'expéditeur spécifie une adresse de réponse Et d'autres plus spéciales : X-Confirm-Reading-To: Priority: ''urgent'' ou ''non-urgent'') adresse de confirmation de réception spécifie la priorité de l'email (''normal'',

IX.2) Email de type ''html'' Il est bien évidemment plus intéressant d'envoyer un courrier dans ce format, les possibilités de mise en page étant beaucoup plus riche. Pour faire comprendre aux gestionnaires de messagerie que notre courrier est dans ce format, nous allons devoir passer des informations supplémentaires au ''header''. // initialisation $destinataire = 'toto@gmail.com'; $titre = 'Titre du courrier'; $message = '<strong>message</strong> du courrier'. "\r\n"; $header = 'MIME-Version: 1.0'. "\r\n"; $header.= 'Content-type: text/html; charset=utf-8'. "\r\n"; // envoi du courrier mail($destinataire, $titre, $message, $header); Note : Certains logiciels de messagerie ne comprennent pas l'utf8, il faudra éventuellement utiliser l'iso-8859-1.

IX.3) Email alternatif Notre courrier va avoir ici 2 composantes : une partie texte et une partie html. Si l'utilisateur ne peux lire les emails contenant du HTML, c'est la version texte qui sera affichée. IX.3.1) Header Commençons par préciser l'aspect ''alternatif'' de notre courrier dans le header grâce à l'attribut Content-type : $header = 'From: "Toto" <toto@cheztoto.com>'. "\r\n"; $header = 'Reply-to: "Contact" <contact@cheztoto.com>'. "\r\n"; $header = 'MIME-Version: 1.0'. "\r\n"; $header.= 'Content-type: multipart/alternative;'. "\r\n";

IX.3.2) Boundary Nous allons devoir ''séparer'' les 2 aspects de notre courrier (texte et html) par ce qu'on appelle une frontière. (boundary) Cette frontière doit être unique afin d'être sûr qu'elle isole bien les différentes partie de notre courrier. Elle est très couramment définie ainsi : $frontiere = md5(rand()); Il nous faut absolument l'ajouter dans le Content-type du header : $header = 'From: "Toto" <toto@cheztoto.com>'. "\r\n"; $header = 'Reply-to: "Contact" <contact@cheztoto.com>'. "\r\n"; $header = 'MIME-Version: 1.0'. "\r\n"; $header.= 'Content-type: multipart/alternative; boundary="'.$frontiere.'"'."\r\n";

Nous allons également devoir utiliser cette frontière dans le corps du message pour séparer les parties. Une frontière est précédée de 2 tirets (--). Sa fermeture doit avoir également 2 tirets à la fin. Le contenu de notre message sera donc désormais structuré ainsi : - frontière - définition du type 'texte' / charset / encodage - message texte - frontière - définition du type 'html' / charset / encodage - message html - fin de frontière Voici page suivante un exemple complet simplifié :

$destinataire = 'cible@gmail.com'; $titre = 'Titre du courrier'; $frontiere = md5(rand()); // HEADER $header = 'From: "Toto" <toto@cheztoto.com>'. "\r\n"; $header = 'Reply-to: "Contact" <contact@cheztoto.com>'. "\r\n"; $header = 'MIME-Version: 1.0'. "\r\n"; $header.= 'Content-type: multipart/alternative; boundary="'.$frontiere.'"'."\r\n"; // MESSAGE $message = '--'.$frontiere."\r\n"; // version TEXTE $message.= 'Content-Type: text/plain; charset="iso-8859-1"'."\r\n"; $message.= 'Content-Transfer-Encoding: 8bit'."\r\n"; $message.= 'Message au format texte'."\r\n"; $message.= '--'.$frontiere."\r\n"; // version HTML $message.= 'Content-Type: text/html; charset="iso-8859-1"'."\r\n"; $message.= 'Content-Transfer-Encoding: 8bit'."\r\n"; $message.= 'Message au format <strong>html</strong>'."\r\n"; $message.= '--'.$frontiere.'--'."\r\n"; // ENVOI du COURRIER mail($destinataire, $titre, $message, $header);

Content-Transfer-Encoding nous sert ici à spécifier un encodage sur 8bits, ce qui assure le bon encodage des caractères accentués. (Par défaut l'encodage est de type anglosaxon, sur 7bits) Cet attribu nous sera également utile lorsque nous allons attacher une pièce jointe à notre courrier. IX.4) Email avec pièce jointe Dans ce cas nous allons avoir également 2 parties distinctes : un message à l'attention du destinataire et un fichier attaché... Nous retrouvons donc une structure similaire avec des frontières mais nous allons devoir modifier les Content-type du header et de la partie du message contenant la pièce jointe ainsi que l'encodage et quelques autres petites choses... Voyons cela dans le détail :

IX.4.1) Header Le type de l'email est maintenant de type multipart/mixed. $header.= 'Content-type: multipart/mixed; boundary="'.$frontiere.'"'."\r\n"; IX.4.2) Partie ''pièce jointe'' du message L'encodage est désormais en base64. Nous devons préciser qu'il s'agit d'une pièce jointe avec un nouvel attribu : Content-Disposition. Il nous reste à préciser le type MIME. $message.= 'Content-Type: application/octet-stream; name="nom_fichier"'."\r\n"; $message.= 'Content-Transfer-Encoding: base64'."\r\n"; $message.= 'Content-Disposition: attachment;'."\r\n"; Note : Plutôt que de préciser le type exact de fichier que nous envoyons, nous précisons juste que c'est du binaire.

IX.4.3) ''Attacher'' la pièce jointe Il nous reste à lire l'intégralité du fichier que nous souhaitons attacher et l'encoder correctement dans notre email. Quelques fonctions vont nous y aider : $fichier = file_get_contents('fichier.ext'); $fichier = chunk_split(base64_encode($fichier)); file_get_contents : Envoie le contenu d'un fichier dans une chaîne base64_encode : Encode une chaîne en type MIME base64 chunk_split : Formate une chaîne selon la norme RFC 2045 La partie du message pour la pièce jointe : $message.= 'Content-Type: application/octet-stream; name="fichier.ext"'."\r\n"; $message.= 'Content-Transfer-Encoding: base64'."\r\n"; $message.= 'Content-Disposition: attachment; filename="fichier.ext"'."\r\n"; $message.= $fichier."\r\n";