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 :

Email HTML avec pièce jointe affichée [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 28
    Points
    28
    Par défaut Email HTML avec pièce jointe affichée
    Bonjour à tous.

    J'ai rencontré un problème lors de l'envoi d'emails au format HTML. J'ai donc repris un code que j'ai trouvé dans vos cours (voir le cours) et ai ainsi réussi à envoyer des emails au format HTML avec une image en pièce jointe.

    Cependant, je cherche à afficher cette pièce jointe dans le mail que j'ai envoyé. Est-ce possible et si oui, pouvez-vous me donner une piste à suivre ?
    Voici la fonction qui s'occupe d'envoyer des mails:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    function envoi_mail($to, $subject, $sendermail, $sendername, $message, $link_to_card, $file_name)
    {
    // clé aléatoire de limite
    $boundary = md5(uniqid(microtime(), TRUE));
     
    // Headers
    $headers = 'From: '.$sendername.' <'.$sendermail.'>'."\r\n";
    $headers .= 'Mime-Version: 1.0'."\r\n";
    $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
    $headers .= "\r\n";
     
    // Message
    $msg = 'Vous avez reçu une carte postale virtuelle de la part de '.$sendername.'. Cependant, votre client mail ne vous permet pas de la lire. Rendez-vous à cette adresse pour la voir: '.$link_to_card.'.'."\r\n\r\n";
     
    // Message HTML
    $msg .= '--'.$boundary."\r\n";
    $msg .= 'Content-type: text/html; charset=iso-8859-1'."\r\n\r\n";
    $msg .= html_entity_decode($message).'<hr /><img src="'.str_replace('/', '_', str_replace(':', '_', $file_name)).'" /><br />Découvrez cette carte postale en meilleure résolution sur <a href="'.$link_to_card.'">'.$link_to_card.'</a>'."\r\n";
     
     
    // Pièce jointe
    if (file_exists($file_name))
    {
    	$file_type = filetype($file_name);
    	$file_size = filesize($file_name);
     
    	$handle = fopen($file_name, 'r') or die('File '.$file_name.'can t be open');
    	$content = fread($handle, $file_size);
    	$content = chunk_split(base64_encode($content));
    	$f = fclose($handle);
     
    	$msg .= '--'.$boundary."\r\n";
    	$msg .= 'Content-type:'.$file_type.';name='.$file_name."\r\n";
    	$msg .= 'Content-transfer-encoding:base64'."\r\n\r\n";
    	$msg .= $content."\r\n";
    }
     
    // Fin
    $msg .= '--'.$boundary."\r\n";
     
    // Function mail()
    mail($to, $subject, $msg, $headers);
    }
    Merci d'avance pour toute contribution utile.
    Cordialement,
    WebManiaK.

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 28
    Points
    28
    Par défaut
    Comme beaucoup de monde ici, je me réponds à moi-même, désolé pour le up.
    J'ai trouvé comment faire finalement. Le code est parfaitement bon mais il faut regarder le nom de la pièce jointe une fois envoyée et l'insérer dans l'email.

    Par exemple, si la pièce jointe s'appelle toto.png, il faudra mettre un:
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    <img src="toto.png" alt="mon image" />
    Toute la difficulté est de récupérer le nom exact de l'image (qui est souvent le chemin complet vers l'image sur le disque) pour pouvoir l'afficher.

    J'espère pouvoir aider d'autres personnes avec ma réponse.

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

Discussions similaires

  1. Email HTML avec pièce jointe
    Par David_LeNovis dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 13/12/2013, 08h55
  2. [PHP 5.3] Envoi de mail en texte, html, avec pièces-jointes et images....
    Par rafmos dans le forum Langage
    Réponses: 1
    Dernier message: 06/08/2010, 15h58
  3. Email automatique avec pièce-jointe
    Par sylvain-g dans le forum VBScript
    Réponses: 1
    Dernier message: 13/09/2009, 01h43
  4. [Mail] problème mail html avec pièce jointe
    Par stars333 dans le forum Langage
    Réponses: 2
    Dernier message: 12/06/2007, 19h44

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