Exercices
Questions à choix multiple

Leçon N° 20 : Courrier, réseau

Schéma simplifié
Envoyer un e-mail à partir du serveur
FTP
Notes de page

Shéma simplifié des possibilité de ytansfert de messages et fichiers par Internet

Envoyer du courrier à partir du serveur

    L'envoi de courrier par internet : Deux façons d'envoyer un mail :
  1. La façon fournie par HTML
    <a href=mailto:somebody@someserver>Envoyer un mail

    Envoyer un mail
      Inconvénients de cette méthode :
    • S'il n'y a pas de compte de messagerie sur le machine, le mail ne peut pas être envoyé
    • S'il y a un ce sera ce compte qui sera l'expéditeur du mail
      Avantages :
    • On "connait" l'expéditeur du message (a condition que l'expéditeur soit le propriétaire de la machine et du compte de messagerie
  2. La façon fournie par le serveur, dans notre cas implémentée par PHP
      L'avantage :
    • Pas besoin de compte de messagerie
      Les inconvénients :
    • Pas toujours supporté par le prestataire (ex: free)
    • On ne sait pas qui a écrit, on n'a pas son adresse puisque c'est le serveur qui a envoyé le message, le message vient toujours du serveur

La fonction mail() de PHP

Prérequis :
Les adresses du serveur SMTP et sendmail_from doivent être spécifiées dans le php.ini
Ci-après un exemple de php.ini :
[mail function]
; For Win32 only.
SMTP = mail.club-internet.fr

; For Win32 only: au lieu de me.localhost.com
sendmail_from = votre_nom@votre_prestataire
(Ex:toto.machin@wanadoo.fr)
; For Unix only. You may supply arguments as well (default: "sendmail -t -i").
;sendmail_path =
Syntaxe :
boolean mail ( string to, string subject, string message [, string additional_headers [, string additional_parameters]])
Cette fonction poste automatiquement le message message à destination de to.
Les destinataires multiples doivent être séparés par des virgules.
Les emails avec pièces jointes ou contenus particuliers (comme les emails en HTML, par exemple), peuvent être réalisés avec cette fonction. Il faut respecter l'encodage MIME.
Pour plus de détails, voyez www.zend.com/zend/spotlight/sendmimeemailpart1.php
mail() retourne TRUE si le mail est envoyé, et FALSE sinon.
Exemple 1. Envoi de courrier électronique :
<?php
mail("rasmus_@lerdorf.on.ca", "Mon Sujet", "Ligne 1\nLigne 2\nLigne 3");
?>
Le quatrième argument passé sera inséré à la fin de l'en-tête.
Typiquement, cela permet d'insérer des en-têtes supplémentaires. Les en-têtes multiples doivent être séparés par des virgules.
Note 1 : Sous Windows 32bits, vous devez utiliser \r\n pour séparer les en-têtes. Notez aussi que les en-têtes cc: et bcc: sont sensibles à la casse et doivent être écrits Cc: et Bcc: sous Win32.
Si le cinquième argument additional_parameters est fourni, PHP l'utilisera dans son appel du programme d'envoi de courrier électronique. Ceci est pratique pour passer une valeur correcte à l'en-tête Return-Path, avec sendmail.
Note 2 : Le cinquième paramètre a été ajouté en PHP 4.0.5.
Exemple 2. Envoi de courrier avec des en-têtes supplémentaires :

<?php
mail("nobody@aol.com", "Le sujet", $message, "From: webmaster@$SERVER_NAME\nReply-To: webmaster@$SERVER_NAME\nX-Mailer: PHP/" . phpversion());
?>
Avec le cinquième paramètre, vous pouvez ajouter d'autres paramètres de ligne de commande qui seront utilisés par le programme d'envoi de courrier.
Dans l'exemple ci-dessous, l'en-tête Return-Path est correctement paramétré. Normalement, sendmail ajoute automatiquement l'en-tête X-Authentication-Warning (paramètre -f), car l'utilisateur "serveur web" n'est probablement pas un de ses utilisateurs de confiance ("trusted users"). Pour supprimer cette alerte, ajoutez l'utilisateur du serveur web dans la configuration de sendmail.
Exemple 3. Envoi de eMail avec des en-têtes supplémentaires et un paramètre de ligne de commande supplémentaire

<?php
mail("nobody@aol.com", "the subject", $message, "From: webmaster@$SERVER_NAME", "-fwebmaster@$SERVERNAME");
?>
Vous pouvez aussi utiliser des techniques simples de concaténations de chaînes pour construire des messages complexes : ?
Exemple 4. Envoi de mail complexe.

<?php
$recipient .= "Mary ".", " ; // destinataire 1 /remarquez les virgules
$recipient .= "Kelly ".", ";// destinataire 2/remarquez les virgules
$recipient .= "ronabop@php.net"; // destinataire 3
$subject = "Rappel des anniversaires du mois d'aoÛt";// Sujet
$message .= "Le mail suivant inclut une table au format ASCII\n";// message
$message .= "17\t\tAou\t\t1973\n"; /* Quelques en-têtes : errors, From cc's, bcc's, etc */
$headers .= "From: Rappel d'anniversaire \n";
$headers .= "X-Sender: \n";
$headers .= "X-Mailer: PHP\n"; // mailer
$headers .= "X-Priority: 1\n"; // priorité 1
$headers .= "Return-Path: \n"; // Re-chemin de retour pour les erreurs
$headers .= "Content-Type: text/html; charset=utf-8\n" // Type MIME
$headers .= "Cc:birthdayarchive@php.net\n"; // Champs CC (doivent être aussi dans le to dans les anciennes versions de PHP)
$headers .= "Bcc:birthdaycheck@php.net, birthdaygifts@php.net"; // Champs BCCs
mail($recipient, $subject, $message, $headers);L'envoi du mail lui-même
?>
Note : Assurez-vous qu'il n'y a aucun saut de ligne (ou d'autre espace ou caractère blanc) dans les paramètres to ou subject, car cela peut avoir des effets secondaires irrationnels.
Exercices sur l'envoi de messages
Nom du fichier : exercises_20/lesson_20_a0_envoyer_un_mail.php
Envoyer un fichier par mail
Nom du fichier : exercises_20/lesson_20_a1_envoyer_un_fichier_par_mail.php
Envoi d'un fichier du client vers le serveur
Nom du fichier : exercises_20/lesson_20_a3_envoyer_un_fichier.php

FTP File transfer Protocol

Liste des fonctions disponibles relatives à ftp :
FonctionDescription
ftp_cdupChange de dossier, et passe au dossier parent.
ftp_chdirChange le dossier courant.
ftp_closeCloses an FTP connection
ftp_connectOuvre une connexion FTP
ftp_deleteEfface un fichier sur un serveur FTP.
ftp_execRequest execution of a program on the FTP server
ftp_fget Télécharge un fichier depuis un serveur FTP et le sauve dans un fichier déjà ouvert.
ftp_fputCharge un fichier ouvert sur un serveur FTP.
ftp_get_optionRetrieves various runtime behaviours of the current FTP stream
ftp_get Télécharge un fichier depuis un serveur FTP.
ftp_loginAuthentification d'une connexion FTP
ftp_mdtm Retourne la date de dernière modification d'un fichier sur un serveur FTP.
ftp_mkdirCrée un dossier.
ftp_nlistRetourne la liste des fichiers dans un dossier.
ftp_pasvActive ou désactive le mode passif.
ftp_putCharge un fichier sur un serveur FTP.
ftp_pwdRetourne le nom du dossier courant.
ftp_quitFerme une connexion FTP.
ftp_rawlist Fait une liste détaillée de fichiers dans un dossier.
ftp_renameRenomme un fichier sur un serveur FTP.
ftp_rmdirEfface un dossier.
ftp_set_optionSet miscellaneous runtime FTP options
ftp_siteEnvoie la commande SITE au serveur.
ftp_size Retourne la taille d'un fichier.
ftp_systype Retourne un identifiant de type de serveur FTP.

Exercices le transfer de fichiers avec FTP
Nom du fichier : exercises_20/lesson_20_b0_exemple_de_connexion_ftp.php

Récupérer un fichier d'un serveur ftp sur le poste client
Explorer un répertoire FTP
Syntaxe : <a href="ftp://user:pass@ftp.poulhes.net/">

Ouvrir le fichier renard.txt
Syntaxe : <a href="ftp://user:pass@ftp.poulhes.net/renard.txt">Ouvrir le fichier renard.txt

Télécharger le fichier renard.zip
Syntaxe : <a href="ftp://user:pass@ftp.poulhes.net/renard.zip">Télécharger le fichier renard.zip
Envoyer un ping en PHP
Nom du fichier : exercises_20/lesson_20_c_envoyer_un_ping.php

Tous droits réservés. 2005-2008