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 :

Problème avec mailing multipart


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    responsable machine à café
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : responsable machine à café

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 52
    Points
    52
    Par défaut Problème avec mailing multipart
    Bonjour à tous

    j'ai actuellement un problème avec un envoi de mail.
    En effet, je n'arrive pas à envoyer de mail multipart.

    Lorsque j'utilise le script php suivant, le mail est bien envoyé au destinataire mais le message est vide.

    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
     
    # -=-=-=- MIME BOUNDARY
     
    $mime_boundary = "----Test----".md5(time());
     
    # -=-=-=- MAIL HEADERS
     
    $to = "moi@moi.com";
    $subject = "Test";
     
    $headers  = "From: Our Company <company@ourcompany.com>\r\n";
    $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\r\n";
     
    # -=-=-=- TEXT EMAIL PART
     
    $message = "--$mime_boundary\r\n";
    $message .= "Content-Type: text/plain; charset=UTF-8\r\n";
    $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $message .= "Test de mail.\r\n";
     
    # -=-=-=- ATTACHMENT
     
    $message .= "--$mime_boundary\r\n";
    $message .= 'Content-Type: application/pdf; name="test.pdf"'."\r\n";
    $message .= 'Content-Transfer-Encoding: base64'."\r\n";
    $message .= 'Content-Disposition:attachement; filename="test.pdf"'."\r\n\r\n";
    $message .= chunk_split(base64_encode(file_get_contents('./test.pdf')))."\r\n"; 
    $message .= "--$mime_boundary--\r\n\r\n";
     
    # -=-=-=- SEND MAIL
     
    $mail_sent = @mail( $to, $subject, $message, $headers );
    echo $mail_sent ? "Mail sent" : "Mail failed";
    Le même script plus simple sans multipart (sans boundary) fonctionne très bien.

    J'arrive à envoyer soit un mail avec du texte, soit un mail avec une pièce jointe mais pas les 2 à la fois.

    En fait, lorsque je reçois le mail dans outlook et que je regarde le paramètre qui me sert de boundary, cela ne correspond pas à ce que j'ai mis dans mon script php...
    Je pense que le problème vient de là mais je ne sais pas comment le résoudre.
    Auriez-vous une idée ?

    Merci d'avance

    Voici les scripts qui fonctionne chez moi en environnement windows XP avec MovAmp.

    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
     
    # -=-=-=- MAIL HEADERS
     
    $to = "moi@moi.com";
    $subject = "Test";
     
    $headers  = "From: Our Company <company@ourcompany.com>\r\n";
    $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/alternative;\r\n";
     
    # -=-=-=- ATTACHMENT
     
    $message  = 'Content-Type: application/pdf; name="test.pdf"'."\r\n";
    $message .= 'Content-Transfer-Encoding: base64'."\r\n";
    $message .= 'Content-Disposition:attachement; filename="test.pdf"'."\r\n\r\n";
     
    $message .= chunk_split(base64_encode(file_get_contents('./test.pdf')))."\r\n"; 
     
    # -=-=-=- SEND MAIL
     
    $mail_sent = @mail( $to, $subject, $message, $headers );
    echo $mail_sent ? "Mail sent" : "Mail failed";
    et

    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
     
    # -=-=-=- MAIL HEADERS
     
    $to = "moi@moi.com";
    $subject = "Test";
     
    $headers  = "From: Our Company <company@ourcompany.com>\r\n";
    $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/alternative;\r\n";
     
    # -=-=-=- TEXT EMAIL PART
     
    $message = "Content-Type: text/plain; charset=UTF-8\r\n";
    $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
     
    $message .= "Test de mail.\r\n";
     
    # -=-=-=- SEND MAIL
     
    $mail_sent = @mail( $to, $subject, $message, $headers );
    echo $mail_sent ? "Mail sent" : "Mail failed";

  2. #2
    Membre du Club
    Profil pro
    responsable machine à café
    Inscrit en
    Janvier 2009
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : responsable machine à café

    Informations forums :
    Inscription : Janvier 2009
    Messages : 54
    Points : 52
    Points
    52
    Par défaut
    Avec le script suivant cela fonctionne ...

    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
     
    # -=-=-=- MIME BOUNDARY
     
    $mime_boundary = "----Test----".md5(time());
     
    # -=-=-=- MAIL HEADERS
     
    $to = "moi@moi.com";
    $subject = "Test";
     
    $headers  = "From: Our Company <company@ourcompany.com>\r\n";
    $headers .= "Reply-To: Our Company <company@ourcompany.com>\r\n";
    $headers .= "MIME-Version: 1.0\r\n";
    $headers .= "Content-Type: multipart/alternative; boundary=\"$mime_boundary\"\r\n";
     
    # -=-=-=- TEXT EMAIL PART
     
    $message .= "Content-Type: text/plain; charset=UTF-8\r\n";
    $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
    $message .= "Test de mail.\r\n";
     
    # -=-=-=- ATTACHMENT
     
    $message .= "--$mime_boundary--\r\n\r\n";
    $message .= 'Content-Type: application/pdf; name="test.pdf"'."\r\n";
    $message .= 'Content-Transfer-Encoding: base64'."\r\n";
    $message .= 'Content-Disposition:attachement; filename="test.pdf"'."\r\n\r\n";
    $message .= chunk_split(base64_encode(file_get_contents('./test.pdf')))."\r\n"; 
     
    # -=-=-=- SEND MAIL
     
    $mail_sent = @mail( $to, $subject, $message, $headers );
    echo $mail_sent ? "Mail sent" : "Mail failed";
    J'ai du mal à comprendre comment sont gérées les frontières...

  3. #3
    Membre habitué Avatar de hiul dragonfel
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    199
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 199
    Points : 155
    Points
    155
    Par défaut
    bon je sais pas tout à fait ce que tu veux faire mais si tu veux envoyer un mail avec une pièce jointe il va te falloir une frontière différente "multipart/mixed" en l'occurence car sinon il mettra soit le "text/plain" soit l'"application/pdf" avec une alternative.

    si quelqu'un peut m'aider avec l'envois de plusieurs partie dans un mail je suis partant car je me retrouve avec un problème similaire à celui de Riri80 à savoir que mon mail est envoyé mais que les différentes parties ne sont pas transmisent et je me retrouve avec un mail sans contenu avec 2 pièces jointes de 0kO.

    merci de nous aider.

Discussions similaires

  1. Problème e-mail multipart avec Yahoo
    Par Mister Retsim dans le forum Langage
    Réponses: 0
    Dernier message: 12/04/2012, 04h50
  2. [MySQL] Problème avec mailing multipart
    Par Riri80 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 21/04/2010, 11h05
  3. [Mail] Problème avec mail au format HTML
    Par kidpigeyre dans le forum Langage
    Réponses: 4
    Dernier message: 06/11/2006, 16h26
  4. [Mail] Problème avec mail()
    Par narber76 dans le forum Langage
    Réponses: 1
    Dernier message: 10/05/2006, 19h34
  5. [Mail] Problème avec mail et image
    Par phpaide dans le forum Langage
    Réponses: 5
    Dernier message: 27/04/2006, 09h06

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