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

PHP & Base de données Discussion :

Problème avec mailing multipart


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    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
    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.
    Le même script plus simple sans multipart fonctionne très bien.

    Auriez-vous une idée ?
    Mon but final est d'envoyer une pièce jointe mais si j'arrive à résoudre ce premier problème, je pense que je toucherai au but.

    Merci d'avance

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
     
    <?php 
         //-----------------------------------------------
         //DECLARE LES VARIABLES
         //-----------------------------------------------
     
         $destinataire='mail_destinataire@fai.fr';
         $email_expediteur='votre_mail@fai.fr';
         $email_reply='email_de_reponse@fai.fr';
     
         $message_texte='Bonjour,'."\n\n".'Voici un message au format texte'; 
         $message_html='<html>
         <head>
         <title>Titre</title>
         </head>
         <body>Test de message</body>
         </html>';
     
         //-----------------------------------------------
         //GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
         //-----------------------------------------------
     
         $frontiere = '-----=' . md5(uniqid(mt_rand()));
     
         //-----------------------------------------------
         //HEADERS DU MAIL
         //-----------------------------------------------
     
         $headers = 'From: "Nom" <'.$email_expediteur.'>'."\n";
         $headers .= 'Return-Path: <'.$email_reply.'>'."\n";
         $headers .= 'MIME-Version: 1.0'."\n";
         $headers .= 'Content-Type: multipart/alternative; boundary="'.$frontiere.'"';
     
         //-----------------------------------------------
         //MESSAGE TEXTE
         //-----------------------------------------------
         $message = 'This is a multi-part message in MIME format.'."\n\n";
     
         $message .= '--'.$frontiere.'--'."\n";
         $message .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
         $message .= $message_texte."\n\n";
     
         //-----------------------------------------------
         //MESSAGE HTML
         //-----------------------------------------------
         $message .= '--'.$frontiere.'--'."\n";
         $message .= 'Content-Type: text/html; charset="iso-8859-1"'."\n";
         $message .= 'Content-Transfer-Encoding: 8bit'."\n\n";
         $message .= $message_html."\n\n";
     
         $message .= '--'.$frontiere.'--'."\n";
     
         if(mail($destinataire,$sujet,$message,$headers))
         {
              echo 'Le mail a été envoyé';
         }
         else
         {
              echo 'Le mail n\'a pu être envoyé';
         } 
    ?>

  2. #2
    Membre confirmé
    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
    Par défaut
    Je précise que je suis dans un environnement local avec MovAmp sur Windows XP.
    J'utilise le serveur de mail accessible avec le réseau uniquement.

    Dans l'aide officiel PHP de la commande mail, il est utilisé les retours chariots \r\n alors que dans le script que j'ai récupéré, il est uniquement utilisé \n.
    Je suis en train de tester avec \r\n.

  3. #3
    Membre confirmé
    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
    Par défaut
    C'est mieux ! le mail n'est plus vide.
    Cependant, je n'ai toujours pas de pièce jointe...

    Voici le code que j'ai utilisé

    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
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    # -=-=-=- PHP FORM VARIABLES (add as many as you would like)
     
    $name = "toto";
    $email = "moi@moi.com";
    $invoicetotal = "titi";
     
    # -=-=-=- MIME BOUNDARY
     
    $mime_boundary = "----Your_Company_Name----".md5(time());
     
    # -=-=-=- MAIL HEADERS
     
    $to = "$email";
    $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 .= "$name:\r\n\r\n";
    $message .= "This email is to confirm that \"Our Company\" has received your order.\r\n";
    $message .= "Please send payment of $invoicetotal to our company address.\r\n\r\n";
    $message .= "Thank You.\r\n\r\n";
     
    # -=-=-=- HTML EMAIL PART
     
    $message .= "--$mime_boundary\r\n";
    $message .= "Content-Type: text/html; charset=UTF-8\r\n";
    $message .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
     
    $message .= "<html>\r\n";
    $message .= "<body style=\"font-family:Verdana, Verdana, Geneva, sans-serif; font-size:14px; color:red;\">\r\n";
    $message .= "$name:<br>\r\n";
    $message .= "<br>\r\n";
    $message .= "This email is to confirm that \"Our Company\" has received your order.<br>\r\n";
    $message .= "Please send payment of $invoicetotal to our company address.<br>\r\n\r\n";
    $message .= "<br>\r\n";
    $message .= "Thank You.<br>\r\n\r\n";
    $message .= "</body>\r\n";
    $message .= "</html>\r\n";
     
    # -=-=-=- FINAL BOUNDARY
     
    $message .= "--$mime_boundary--\r\n\r\n";
     
    # -=-=-=- ATTACHMENT
     
    $message .= 'Content-Type: image/jpeg; name=\"toto.jpg\"'."\r\n";
    $message .= 'Content-Transfer-Encoding: base64'."\r\n";
    $message .= 'Content-Disposition:attachement; filename=\"toto.jpg\"'."\r\n\r\n";
     
    $message .= chunk_split(base64_encode(file_get_contents('./toto.jpg')))."\r\n"; 
     
    echo "message=$message<br>";
     
    # -=-=-=- SEND MAIL
     
    $mail_sent = @mail( $to, $subject, $message, $headers );
    echo $mail_sent ? "Mail sent" : "Mail failed";

  4. #4
    Membre confirmé
    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
    Par défaut
    Le code suivant fonctionne chez moi.
    J'ai retiré toutes les frontières et conservé uniquement la pièce jointe du mail.

    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
     
    # -=-=-=- PHP FORM VARIABLES (add as many as you would like)
     
    $email = "moi@moi.com";
     
    # -=-=-=- MAIL HEADERS
     
    $to = "$email";
    $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";
     
    # -=-=-=- 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";

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. Problème avec mailing multipart
    Par Riri80 dans le forum Langage
    Réponses: 2
    Dernier message: 26/04/2010, 09h27
  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