IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Mail] Envoi d'un courriel dont le contenu est un fichier HTML


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Points : 40
    Points
    40
    Par défaut [Mail] Envoi d'un courriel dont le contenu est un fichier HTML
    Bonjour à tous,

    Je souhaite envoyer un courriel en HTML, dont le contenu du message est un fichier.
    Je m'explique plus précisément :

    J'ai un fichier HTML (ou PHP, peu importe) contenant mon message mis en page, tout beau, avec des CSS, etc. qui s'appelle "mon.message.html"

    Je voudrais que lorsque j'utilise la fonction mail() de PHP, je puisse utiliser mon fichier "mon.message.html", un peu comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?PHP mail('adresse@destinataire.com',  'Sujet du message',  'mon.message.html'); ?>
    ou comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?PHP mail('adresse@destinataire.com',  'Sujet du message', include("mon.message.html")); ?>
    En procédant ainsi, je veux éviter d'inclure tout mon contenu dans une variable PHP comme je fais habituellement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?PHP $message = "<html>blabla</html>";
    mail('adresse@destinataire.com',  'Sujet du message',  '$message'); ?>
    Merci à ceux qui pourront m'éclairer ou m'aiguiller vers une autre solution.

    uado

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Faut quand même récupérer le fichier dans un variable mais tu peux utiliser file_get_contents pour cela. Mais surtout, faut forcer l'entête Content-Type à text/html si tu veux que le code HTML reçu soit correctement interprété :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?PHP mail('adresse@destinataire.com',  'Sujet du message', file_get_contents('mon.message.html'), 'Content-Type: text/html'); ?>

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Points : 40
    Points
    40
    Par défaut
    Bonsoir,

    Pour l'entête "Content-Type" à "text/html", je le savais déjà , c'est "file_get_contents" qui me manquait, je vais essayer ça.

    Merci beaucoup !

    uado

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Je viens de tester ta solution. Cela fonctionne parfaitement avec un fichier HTML. En revanche, dès que j'appelle un fichier PHP deux problèmes se posent à moi :
    - soit j'appelle un fichier avec un argument "test.courriel.php?id=1'" et le courriel part mais vide, puisque le fichier ne peut pas être ouvert ("Warning: file_get_contents(test.courriel.php?id=1): failed to open stream: No such file or directory in [...]") ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?PHP $message = file_get_contents('test.courriel.php?id=1');
    mail("adresse@domaine.com", "Votre mot de passe", $message, "Content-Type: text/html"); ?>
    - soit j'appelle un fichier sans argument, en tentant de passer ma variable par une session, mais le PHP n'est pas interprété.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?PHP $_SESSION["id"] = 1;
    $message = file_get_contents('test.courriel.php');
    mail("adresse@domaine.com", "Votre mot de passe", $message, "Content-Type: text/html"); ?>
    Quelqu'un a déjà tenté d'envoyer un courriel de cette façon ?

    Merci de votre aide.

    uado

  5. #5
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Utilise file_get_contents mais en mettant une URL http:// vers ce fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <?PHP $message = file_get_contents('http://monsite.com/chemin/test.courriel.php?id=1');
    mail("adresse@domaine.com", "Votre mot de passe", $message, "Content-Type: text/html"); ?>
    Ainsi, PHP appellera le fichier par HTTP en passant correctement le paramètre id et le script sera interprété.

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    Merci de ton aide. Malheureusement, les fonctions "file_get_contents" et "readfile" ne sont pas activées sur mon serveur. Je vais devoir trouver une autre solution.

    Merci de ta disponibilité.

    uado

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Tu peux peut-être t'en sortir avec un include ou un require mais cela suppose qur tu changes complètement la façon dont fonctionne ta page test.courriel.php car elle ne peut plus forcément s'attendre à récupérer ses paramètres depuis la requête et il faut qu'elle construise ta variable $message contenant le message que tu utiliseras par la suite. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    test.courriel.php :
    -------------------
    <?php
    // On recupere l'ID directement dans la variable $id qui existe deja
    $message = "<html>...";
    ?>
     
    envoi_mail.php :
    ----------------
    <?php
    ...
    // On definit $id pour test.courriel.php
    $id = 1;
    // On appelle test.courriel.php
    include("test.courriel.php");
    // Le message se retrouve construit par test.courriel.php et est contenu dans $message
    mail("adresse@domaine.com", "Votre mot de passe", $message, "Content-Type: text/html");
    ?>

    Du détail, du détail, du détail !!!
    Revenons à la source : lisons la documentation et les fichiers de trace, la réponse à notre problème s'y trouve sans doute

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 42
    Points : 40
    Points
    40
    Par défaut
    Oui pourquoi pas, c'est une solution.

    Merci encore.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Session dont le contenu est " "
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 15/08/2010, 11h44
  2. Réponses: 9
    Dernier message: 03/11/2009, 16h39
  3. Détecter les cellules dont le contenu est souligné
    Par Dakuan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 02/07/2008, 12h32
  4. [XSLT] des noeuds dont le contenu est forcément différent
    Par DelphLaga dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/10/2006, 19h06
  5. Fenêtre dont le contenu est dynamique (lié a un menu)..
    Par fredrider dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 03/10/2006, 12h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo