Bonjour à tous,
Je souhaiterais envoyer un mail avec une PJ avec la fonction mail().
Cependant j'ai quelques soucis :
- Le mail est bien envoyé, je reçois un mail avec PJ qui porte le bon nom, la taille affichée est ok.
- La pièce jointe (.jpg) est corrumpue, en l'ouvrant avec un editeur texte on s'aperçoit qu'il manque les 3/4 de la première ligne, le reste est identique
- Le mail ne contient pas de corps de texte
- je reçois en plus un fichier texte vide : ATT234650.txt ou les chiffres varient
J'essaye de recroiser entre les différents exemples (principal : developpez.com ici) que je trouve sur google, mais j'ai toujours un soucis, j'ai changé les boundary là je ne recevais plus le fichier texte, mais la pj était vide, et une partie du bondary s'affichait dans le corps du mail...
Des indications qui vous sautent au yeux ?
Code :
- <?php
- // To
- $to = 'dest@serv.com';
- echo($to.'<br>');
- // Subject
- $subject = 'Test Mail';
- echo($subject.'<br>');
- // clé aléatoire de limite
- $boundary = md5(uniqid(microtime(), TRUE));
- // Headers
- $headers = 'From: Test <test@serv.com>'."\r\n";
- $headers .= 'Mime-Version: 1.0'."\r\n";
- $headers .= 'Content-Type: multipart/mixed;boundary='.$boundary."\r\n";
- $headers .= "\r\n";
-
- // Message
- $msg = 'This is a multipart/mixed message.'."\r\n\r\n";
-
- // Texte
- $msg .= '--'.$boundary."\r\n";
- $msg .= 'Content-type:text/plain;charset=utf-8'."\r\n";
- $msg .= 'Content-transfer-encoding:8bit'."\r\n";
- $msg .= 'Un message avec une pièce jointe.'."\r\n";
-
- // Pièce jointe
- $file_name = 'cocaine.jpg';
- if (file_exists($file_name))
- {
- echo("<span class=\"fontFamilyStandardText fontSizeNormal fontColorStandardText\">" );
- echo ("<br><br>file_exists : ok<br><br>" );
- echo("</span>" );
-
- $file_type = filetype($file_name);
- echo('file_type : '.$file_type.'<br>');
- $file_size = filesize($file_name);
- echo('$file_size : '.$file_size.'<br>');
- //pièce jointe
- $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";
- $msg .= $content."\r\n";
- }
- else
- {
- echo("<span class=\"fontFamilyStandardText fontSizeNormal fontColorStandardText\">" );
- echo ("<br><br>file_exists : pas de fichier<br><br>" );
- echo("</span>" );
- }
- // Fin
- $msg .= '--'.$boundary."\r\n";
- // Function mail()
- if (mail($to, $subject, $msg, $headers))
- {
- echo("<span class=\"fontFamilyStandardText fontSizeNormal fontColorStandardText\">" );
- echo ("<br>Un mail viens d'être envoyé à l'adresse : ".$to);
- echo("</span>" );
- }
- else
- {
- echo("<span class=\"fontFamilyStandardText fontSizeNormal fontColorStandardText\">" );
- echo ("<br>Echec de l’envoi du mail" ); // à l'adresse : ".$_POST['mail']
- echo("</span>" );
- }
- ?>
|
Message édité par Toscanno le 03-12-2010 à 09:58:11