Ovh détruit mes pièces jointes

Ovh détruit mes pièces jointes - PHP - Programmation

Marsh Posté le 03-08-2012 à 11:16:14    

Bonjour,
 
   J'envoie des mels avec pièce jointe depuis mon intranet php via le code suivant, et ceux depuis 8 ans :

Code :
  1. $limite = "_parties_".md5(uniqid(rand()));
  2. $mail_mime = "Date: ".date("l j F Y, G:i" )."\n";
  3. $mail_mime .= "MIME-Version: 1.0\n";
  4. $mail_mime .= "Content-Type: multipart/mixed;\n";
  5. $mail_mime .= " boundary=\"----=$limite\"\n\n";
  6. //Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
  7. $texte = "This is a multi-part message in MIME format.\n";
  8. $texte .= "Ceci est un message au format MIME.\n";
  9. $texte .= "------=".$limite."\n";
  10. $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  11. $texte .= "Content-Transfer-Encoding: 7bit\n\n";
  12. $texte .= $message;
  13. $texte .= "\n\n";
  14. $attachement="";
  15. for ($i=0;$i<count($filename);$i++) {
  16.  $attachement .= "------=".$limite."\n";
  17.  $attachement .= "Content-Type: ".$typemime."; name=\"".$nom[$i]."\"\n";
  18.  $attachement .= "Content-Transfer-Encoding: base64\n";
  19.  $attachement .= "Content-Disposition: attachment; filename=\"".$nom[$i]."\"\n\n";
  20.  $fd = fopen($filename[$i], "r" );
  21.  $contenu = fread($fd, filesize($filename[$i]));
  22.  fclose( $fd );
  23.  $attachement .= chunk_split(base64_encode($contenu));
  24.  $attachement .= "\n\n\n";
  25. }
  26. $attachement .= "\n\n\n------=".$limite."\n";
  27. return mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom:$from\n".$mail_mime);


 
Les mels reçus avait bien une pièce jointe MAIS depuis mon changement d'hébergement (OVH) les pièces jointes sont vide !
J'ai fait un test en envoyant mes mels (+ pièce jointe) sur ma messagerie perso (yahoo) et j'arrive bien à lire mes pièces jointes.
J'en déduis qu'OVH détruit mes pièces jointes, non ?
D'où cela provient ?
Y'a t-il des conditions particulières pour réceptionné des mels sur OVH ?
 
J'ai testé avec PhpMailer et j'ai le même problème.
 
Merci par avance.


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 03-08-2012 à 11:16:14   

Reply

Marsh Posté le 03-08-2012 à 13:16:44    

Il bloque peut-être certaines extensions ou limite la taille des PJ?
 
J'ai une appli web chez eux sur un serveur mutualisé qui envoi des mails avec en PJ un fichier pdf, ça arrive bien aux destinataires avec tout...


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 03-08-2012 à 14:14:58    

Pas de problèmes chez moi avec OVH pour les pièces jointes [:petrus dei] Il manque un truc au niveau des boundaries là, 2 sec je regarde

Reply

Marsh Posté le 03-08-2012 à 14:32:03    

Ok, alors y'a effectivement un problème au niveau du machin "$limite" (qui définit le boundary).
 
Avec un email "normal", sans pièces jointes, tu sépares les différents types de contenu via un même boundary (exemple pour avoir une version texte et html). Exemple :
 

Code :
  1. From: from@domain.com
  2. Return-Path: from@domain.com
  3. X-Mailer: PHP
  4. MIME-version: 1.0
  5. Content-Type: multipart/alternative; boundary="efdd20b206a912c5c707ec6a82ebc022"
  6. Content-Transfer-Encoding: 8bit
  7. --efdd20b206a912c5c707ec6a82ebc022
  8. Content-Type: text/plain; charset=iso-8859-1
  9. Content-Transfer-Encoding: 8bit
  10. Contenu du mail
  11. --efdd20b206a912c5c707ec6a82ebc022
  12. Content-Type: text/html; charset=iso-8859-1
  13. Content-Transfer-Encoding: 8bit
  14. <p>Contenu du mail en HTML</p>
  15. --efdd20b206a912c5c707ec6a82ebc022--
  16. --efdd20b206a912c5c707ec6a82ebc022--


 
C'est ce que fait ton code actuel, à la différence que t'as juste la version texte, pas de version HTML. Maintenant dès qu'on veut foutre des pièces jointes, ça se complique, faut un double boundary qui sépare les contenus bruts des pièces jointes :

Code :
  1. From: from@domain.com
  2. Return-Path: from@domain.com
  3. X-Mailer: PHP
  4. MIME-version: 1.0
  5. Content-Type: multipart/mixed; boundary="php-mixed-8e85df8c0c0d6919cbad25e5f6cb0537"
  6. Content-Transfer-Encoding: 8bit
  7. --php-mixed-11051de50872b56eef891a737b3c563c
  8. Content-Type: multipart/alternative; boundary="php-alt-11051de50872b56eef891a737b3c563c"
  9. --php-alt-11051de50872b56eef891a737b3c563c
  10. Content-Type: text/plain; charset=iso-8859-1
  11. Content-Transfer-Encoding: 8bit
  12. Contenu du mail
  13. --php-alt-11051de50872b56eef891a737b3c563c
  14. Content-Type: text/html; charset=iso-8859-1
  15. Content-Transfer-Encoding: 8bit
  16. <p>Contenu du mail</p>
  17. --php-alt-11051de50872b56eef891a737b3c563c--
  18. --php-mixed-11051de50872b56eef891a737b3c563c
  19. Content-Type: image/png; name="une-image.png"
  20. Content-Transfer-Encoding: base64
  21. Content-Disposition: attachment
  22. (fichier en base64)
  23. --php-mixed-11051de50872b56eef891a737b3c563c--


 
J'ai donc 2 boundaries : un préfixé avec php-alt-, l'autre avec php-mixed-, les 2 sont donc imbriqués
 
Et voilà [:petrus75]
 

Reply

Marsh Posté le 09-01-2013 à 10:29:26    

Je ne pense pas que ce soit un problème de limite car il n'a pas besoin d'imbriquer un deuxième multipart s'il n'y a qu'une version texte du message.
 
J'ai le même problème chez ovh, mais que pour les mails qui arrivent sur une boite hébergée sur le même serveur. Le même mail arrive bien sur n'importe quelle autre boite mail...
 
Si quelqu'un d'autre à rencontré ce problème et trouvé une solution je suis preneur !

Reply

Marsh Posté le 09-01-2013 à 11:48:23    

Bonjour,
Je pense que le problème a été résolu. :)


---------------
Besoin d'aide pour votre projet? agence web
Reply

Marsh Posté le 09-01-2013 à 14:15:56    

Bonjour,
 
  Pourquoi le problème à été résolu  
 


---------------
Le problème avec les idées derrière la tête c'est qu'on ne peut pas les voir :??:
Reply

Marsh Posté le 11-01-2013 à 16:36:24    

En fait la pièce jointe est bien présente quand je me connecte avec le webmail. Le problème doit venir du PC.

Reply

Marsh Posté le 14-01-2013 à 09:36:31    

snike a écrit :

Bonjour,
 
   J'envoie des mels avec pièce jointe depuis mon intranet php via le code suivant, et ceux depuis 8 ans :

Code :
  1. $limite = "_parties_".md5(uniqid(rand()));
  2. $mail_mime = "Date: ".date("l j F Y, G:i" )."\n";
  3. $mail_mime .= "MIME-Version: 1.0\n";
  4. $mail_mime .= "Content-Type: multipart/mixed;\n";
  5. $mail_mime .= " boundary=\"----=$limite\"\n\n";
  6. //Le message en texte simple pour les navigateurs qui n'acceptent pas le HTML
  7. $texte = "This is a multi-part message in MIME format.\n";
  8. $texte .= "Ceci est un message au format MIME.\n";
  9. $texte .= "------=".$limite."\n";
  10. $texte .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n";
  11. $texte .= "Content-Transfer-Encoding: 7bit\n\n";
  12. $texte .= $message;
  13. $texte .= "\n\n";
  14. $attachement="";
  15. for ($i=0;$i<count($filename);$i++) {
  16.  $attachement .= "------=".$limite."\n";
  17.  $attachement .= "Content-Type: ".$typemime."; name=\"".$nom[$i]."\"\n";
  18.  $attachement .= "Content-Transfer-Encoding: base64\n";
  19.  $attachement .= "Content-Disposition: attachment; filename=\"".$nom[$i]."\"\n\n";
  20.  $fd = fopen($filename[$i], "r" );
  21.  $contenu = fread($fd, filesize($filename[$i]));
  22.  fclose( $fd );
  23.  $attachement .= chunk_split(base64_encode($contenu));
  24.  $attachement .= "\n\n\n";
  25. }
  26. $attachement .= "\n\n\n------=".$limite."\n";
  27. return mail($to, $sujet, $texte.$attachement, "Reply-to: $reply\nFrom:$from\n".$mail_mime);


 
Les mels reçus avait bien une pièce jointe MAIS depuis mon changement d'hébergement (OVH) les pièces jointes sont vide !
J'ai fait un test en envoyant mes mels (+ pièce jointe) sur ma messagerie perso (yahoo) et j'arrive bien à lire mes pièces jointes.
J'en déduis qu'OVH détruit mes pièces jointes, non ?
D'où cela provient ?
Y'a t-il des conditions particulières pour réceptionné des mels sur OVH ?
 
J'ai testé avec PhpMailer et j'ai le même problème.
 
Merci par avance.


 
Essaie de remplacer la dernière ligne

Code :
  1. $attachement .= "\n\n\n------=".$limite."\n";

par

Code :
  1. $attachement .= "\n\n\n------=".$limite."--\n";


 
C'est pour fermer les boundaries qu'il faut ajouter les -- à la fin
 
Aussi, pour éviter des problèmes avec certaines messageries, tu peux encadrer le contenu de ta pièce jointe par des \r\n

Code :
  1. chr(13).chr(10).chunk_split(base64_encode($contenu)).chr(13).chr(10)


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed