Aller au contenu

PHP/Mails

Leçons de niveau 14
Une page de Wikiversité, la communauté pédagogique libre.
< PHP
Début de la boite de navigation du chapitre
Mails
Icône de la faculté
Chapitre no 13
Leçon : PHP
Chap. préc. :Fichiers
Chap. suiv. :Exceptions
fin de la boite de navigation du chapitre
En raison de limitations techniques, la typographie souhaitable du titre, « PHP : Mails
PHP/Mails
 », n'a pu être restituée correctement ci-dessus.

Le code suivant se connecte à localhost:25 pour envoyer un mail[1] :

<?php
     $to      = 'Destinataire@gmail.com';
     $subject = 'Sujet du mail';
     $message = 'Contenu du message';
     $headers = 'From: Expediteur@gmail.com' . "\r\n" .
       'Reply-To: Expediteur@gmail.com' . "\r\n" .
       'X-Mailer: PHP/' . phpversion();
     mail($to, $subject, $message, $headers);
?>

Si la machine hébergeant le script n’est pas pourvue d'un serveur SMTP, le freeware portable Simple Mail Server[2] peut jouer ce rôle rapidement sans installation.

Pour paramétrer un SMTP distant éventuellement SSL, télécharger les classes mails du framework PEAR Mail[3], Net SMTP[4] et Net Socket[5] qu’elles utilisent.

Pour ajouter un fichier joint télécharger Mail Mime[6].

Télécharger PHPMailer[7] pour bénéficier des classes de ce framework.

Problèmes connus

[modifier | modifier le wikicode]
  1. La connexion a échoué
    • Vérifier le serveur HTTP qui interprète le .php.
  2. SMTP Error: Could not connect to SMTP host
  3. SMTP server error: ERR Email ID not found
  4. Si les mails partent sans arriver :
    • Vérifier que l'IP de l'expéditeur n’est pas blacklistée : http://whatismyipaddress.com/blacklist-check
    • Définir un reverse DNS si absent
    • Veiller à ce que le mail ne soit pas présumé spam, en évitant les sujets vides par exemple, ou les pièces jointes exécutables non compressées (.exe, .cmd, .vbs...).


Utilisation de Mail () plus complexe...

[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple


Explication:

  • Ouverture boundary.(sert à séparer les différentes parties de notre e-mail)
  • Déclaration de type (exemple texte, par défaut les clients mail tentent de convertir l'HTML en texte).
  • Texte.
  • Ouverture boundary.
  • Déclaration de type (exemple HTML,par défaut les clients mail tentent de convertir l'HTML en texte)).
  • HTML.
  • Fermeture boundary.
  • Fermeture boundary.


Avec la mise en place de pièce jointe

[modifier | modifier le wikicode]
Début de l'exemple
Fin de l'exemple


Explication:

  • Ouverture boundary.
  • Déclaration du nouveau content-type et de la seconde boundary.
  • Ouverture boundary_2.
  • Déclaration de type (exemple texte).

Texte.

  • Ouverture boundary_2.
  • Déclaration de type (exemple HTML).

HTML.

  • Fermeture boundary_2.
  • Ouverture boundary.
  • Déclaration de la pièce jointe 1.
  • Ouverture boundary.
  • Déclaration de la pièce jointe 2.
  • Ouverture boundary.
  • Déclaration de la pièce jointe [...].
  • Ouverture boundary.
  • Déclaration de la pièce jointe n.
  • Fermeture boundary.