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 :

Envoyer un lien HTML dans un e-mail avec PHP


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut Envoyer un lien HTML dans un e-mail avec PHP
    Bonjour
    J'ai un formulaire qui permet aux utilisateurs de s'inscrire à une formation, j'ai ajouté un envoye automatique d'un mail de confimation à l'utlisateur inscrit en utilisant la fonction mail() sous php, en envoyant un message simple, mais je veux ajouter à ce message un lien html pour valider l'inscription de chaque utilisateur.
    Comment je peux le réaliser ?
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Le troisième paramètre de ton appel de fonction mail() contient le corps du mail à envoyer : or, tu peux construire ta chaine à base de code HTML valide un peu comme tu veux : place des liens dans ce contenu comme dans tout autre contexte web et ça devrait faire l'affaire.... non ? (si un gourou php passe ici : qu'il veuille bien confirmer, j'ai quand même un doute )

    Autre précision : cela dépendra aussi de l'acceptation (ou non) des contenus mail HTML par le récepteur du mail, car selon la configuration de son client de messagerie, il peut accepter/refuser ce type de contenus.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    J'ai essayé d'ajouter du code HTML dans le message à envoyer, en consultant la boite (qui correspond à l'email de l'utilisateur inscrit), il affiche le code HTML que j'ai fait introduire dans le message au lieu du lien HTML.

  4. #4
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    C'est peut-être un problème d'encodage MIME...
    Peux-tu me montrer ce que tu as mis comme headers (le 4eme param de la fonction) pour définir le mail envoyé ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    La valeur de header est :
    $expediteur = "adresse email de l'expediteur";
    $nomexpediteur = "nom de l'expediteur";
    $header = 'From: '.$nomexpediteur.' <'.$expediteur.'>'

  6. #6
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Pour un contenu HTML dans ton mail, Il faut préciser le type de données dans ce header justement.
    Ca donnerait quelque chose comme :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        $headers = "MIME-Version: 1.0"."\r\n";
        $headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
        $headers .= 'From: '.$nomexpediteur.' <'.$expediteur.'>';
    En tout cas on n'est plus très loin (à quelques détails de syntaxe peut-être )

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Avec les deux instructions que vous m'avez donné, le code HTML ne s'affiche pas le message reçu, MERCI.
    Mais il me reste un petit problème, l'URL que je veux envoyer dans le message ne s'affiche pas comme un lien HTML, il s'affiche seulement en texte.

  8. #8
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Peux-tu montrer la syntaxe que tu utilises pour faire ce lien ?

  9. #9
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Voici la syntaxe :
    $message = "<a href='confirmation.php?nom='.$nomapp.'&prenom='.$prenomapp.'>Confirmer</a>";

  10. #10
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Heu... là on a un souci...

    Si ce lien est inséré dans le corps d'un mail envoyé à l'utilisateur, lorsque celui-ci cliquera sur le lien dans son mail, il ne sera plus dans ton contexte navigateur, où l'URL courante est connue, etc.
    La page confirmation.php (et ses param) que tu appelles ne pourra pas être trouvée par le client de messagerie car il ne sait malheureusement pas encore deviner
    Donne-lui plutôt une adresse absolue, de la forme
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <a href="http://ton_site.com/ton_repertoire/confirmation.php?blablabla"> texte du lien </a>
    Mais ça n'a a priori rien à voir avec le fait qu'il affiche le lien sous forme textuelle, il doit y avoir autre chose qui coince... au fait tu sais que ça serait quand même plus facile si tu joignais à ton thread tout le code pertinent pour comprendre la situation, histoire de documenter le problème ? (je pense notamment au code php qui construit l'appel à la fonction mail, ainsi que l'appel lui-même)

  11. #11
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Bonjour
    Je vous est envoyé le segment du code qui me permet d'envoyer le message de confirmation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $expediteur = "l'email de l'expediteur";
    	$nomexpediteur = "nom de l'expediteur";
    	$message = "Bonjour Mr(Mme) $nomapp $prenomapp<br/>";
    	$message .= "Merci pour votre inscription. Pour la valider veuillez cliquer sur ce lien :";
    	$message .= "<a href='confirmation.php?nom='.$nomapp.'&prenom='.$prenomapp.''>Confirmer</a>";
     
    	$corps="<HTML><BODY><FONT FACE='Arial, Verdana' SIZE=2>";
    	$corps.=$message."</BODY></HTML>";
    	$headers = "MIME-Version: 1.0"."\r\n";
    	$headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
    	$headers .= 'From: '.$nomexp.' <'.$expediteur.'>';
            mail($email, "Confirmation",$corps , $headers);

  12. #12
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Et donc avec la modification d'adresse relative -> absolue, ça donne :
    (et en corrigeant en passant le petit problème de simples quotes imbriquées)
    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
     
    $expediteur = "l'email de l'expediteur";
    $nomexpediteur = "nom de l'expediteur";
    $message = "Bonjour Mr(Mme) $nomapp $prenomapp<br/>";
    $message .= "Merci pour votre inscription. Pour la valider veuillez cliquer sur ce lien :";
     
    // --- ici ligne modifiée pour adresse absolue ---
    $message .= "<a href='http://adresseDeTonSite/repertoireQuiVaBien/confirmation.php?nom=".$nomapp."&prenom=".$prenomapp."'>Confirmer</a>";
     
    $corps="<HTML><BODY><FONT FACE='Arial, Verdana' SIZE=2>";
    $corps.=$message."</BODY></HTML>";
    $headers = "MIME-Version: 1.0"."\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1"."\r\n";
    $headers .= 'From: '.$nomexp.' <'.$expediteur.'>';
     
    mail($email, "Confirmation",$corps , $headers);
    On va y arriver
    Tiens-moi au courant ^^

  13. #13
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Bonjour
    J'ai modifié la ligne que vous m'avez indiqué mais il est resté en mode textuel

  14. #14
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Avec quel client de messagerie as-tu consulté le mail envoyé par la page ?

    Je pose juste la question pour être sûr que tu n'aurais pas par inadvertance choisi un affichage en mode texte ^^
    Selon les clients de messagerie, il ya souvent la possibilité de choisir entre html et texte à la consultation.
    Ce qui veut dire qu'il est possible que ton mail soit bien formé mais que tu le consultes en mode "texte seulement" ... si ce n'est pas le cas ignore ma remarque, mais ça valait quand même la peine de vérifier... ^^

  15. #15
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Comme je suis débutant dans la programmation PHP et HTML , je n'est aucune idée sur le client de messagerie (je ne l'ai pas utilisé).
    Je travaille sous Linux (distribution DEBIAN), j'ai installé seulement le paquet "sendmail" qui me permet d'envoyer les mail à partir de mon code PHP.

  16. #16
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par pedatic Voir le message
    ... il est resté en mode textuel
    De quelle manière l'as-tu constaté ? (c'est-à-dire : quel test fais-tu pour voir le message envoyé par ta page ?)

  17. #17
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Je fait le test dans ma boite au lettres(c'est à dire que j'envoye un message de test à mon email pour vérifier le message envoyé).

  18. #18
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut


    Citation Envoyé par pedatic
    dans ma boite au lettres
    Tu veux parler de ta boite aux lettres (en acier) qui est devant ta maison, avec une jolie étiquette en papier ? ou bien c'est un programme qui a un nom ? ^^
    (excuse moi par avance mais je ne suis pas encore familier de l'univers linux et je ne connais donc pas les moyens classiques de consultation des mails sur ces systèmes d'exploitation, les pratiques les plus courantes... d'où ma question ^^)

  19. #19
    Membre à l'essai
    Inscrit en
    Juin 2008
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 42
    Points : 22
    Points
    22
    Par défaut
    Que veux tu dire par client de messagerie ?

  20. #20
    Expert confirmé
    Avatar de RomainVALERI
    Homme Profil pro
    POOête
    Inscrit en
    Avril 2008
    Messages
    2 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : POOête

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 652
    Points : 4 164
    Points
    4 164
    Par défaut
    Citation Envoyé par notre amie wiki
    Un client de messagerie est un logiciel qui sert à lire et envoyer des courriers électroniques
    les gros (propriétaires) : outlook, lotus notes...
    quelques autres en vrac : thunderbird (mozilla), googleMail, eudora, libremail, etc.
    au cas ou tu sois linux-only, d'autres : alpine, elm, elmo, gnus, kmail, m2, mutt, msh, SOGo ...

    *reprend son souffle*
    ... un client de messagerie, quoi.

Discussions similaires

  1. [Integration] lien html dans un mail avec Spring Mail
    Par daydream123 dans le forum Spring
    Réponses: 2
    Dernier message: 01/03/2012, 17h12
  2. Comment mettre un lien html dans une table MySql
    Par god_enel dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/01/2007, 14h20
  3. [VBA] Importer fichier texte d'un lien HTML dans ACCESS
    Par VICTOIRE44 dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/12/2006, 10h58
  4. Lien html dans une boucle For(?)
    Par zorba49 dans le forum VBScript
    Réponses: 6
    Dernier message: 17/05/2006, 15h59
  5. liens html dans jlabel
    Par jahyze42 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 28/04/2006, 07h14

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