Writeexcel et lotus

Signaler
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
-
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
-
bonjour à tous

j'utilise (depuis un moment deja) la classe writeexcel et php pour générer et envoyer automatiquement des fichiers excel
en pièce jointe via la fonction mail()
Ca marche plutot très bien, mais un client utilise lotus notes et reçoit le mail sans pièce jointe,
et avec le code illisible du fichier inclus dans le corps du mail

pour info, si j'envoie manuellement le fichier en pièce jointe via outlook, ça marche
ce serait donc le code d'envoi automatique qui ne fonctionne pas
Devrais je changer les headers d'envoi ?
(inutile de dire que le client n'a pas l'intention de changer sa config)

si quelqu'un a une piste, merci d'avance

4 réponses

Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
Hello,

ça n'a aucun rapport avec WriteExcel, c'est ta façon de générer les en-têtes du mail qui n'est pas correcte.
Il nous faudrait donc voir ces en-têtes pour pouvoir essayer de t'aider.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
bonjour
merci pour ta reponse
voila les entetes qui marchent pour tous les fichiers que j'envoie
les variables en majuscules sont récupérées dans une base de données

//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
// HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: "Société <'.$EXP.'>'."\n";
$headers .= 'Return-Path: <'.$reponse.'>'."\n";
$headers .= 'MIME-Version: 1.0'."\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$mail = 'This is a multi-part message in MIME format.'."\n\n";
$mail .= '--'.$frontiere."\n";
$mail .= 'Content-Type: text/plain; charset="iso-8859-1"'."\n";
$mail .= 'Content-Transfer-Encoding: 8bit'."\n\n";
$mail .= $MESSAGE."\n\n";
$mail .= '--'.$frontiere."\n";
//-----------------------------------------------
//  FORMAT de fichier
//-----------------------------------------------
if($FORMAT=='CSV' || $FORMAT=='XLS')
{$mail.= "Content-Type: text/vnd.ms-excel; name=$FICHIER"."\n";}
if($FORMAT=='TXT')
{$mail.= "Content-Type: text/plain; name=$FICHIER"."\n";}


$mail.= "Content-Transfer-Encoding: base64\r\n";
$mail.= "Content-Disposition:attachement; filename=$FICHIER"."\n\n";
$mail.= chunk_split(base64_encode(file_get_contents($CHEMIN.$FICHIER)))."\n";
Messages postés
10839
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
24
mets des \r\n à la place de tes \n et réessaye sous Lotus, pour voir.
Messages postés
1216
Date d'inscription
mardi 20 décembre 2005
Statut
Membre
Dernière intervention
18 octobre 2012
5
bonjour et merci pour ta réponse malalam,
j'ai remplacé tous les \n par \r\n

sans succès, le fichier est toujours illisible mais il semblerait qu'il soit bien en pièce jointe cette fois.  je te joins le code mis à jour

//-----------------------------------------------
//GENERE LA FRONTIERE DU MAIL ENTRE TEXTE ET HTML
//----------------------------------------------
$frontiere = '-----=' . md5(uniqid(mt_rand()));
//-----------------------------------------------
// HEADERS DU MAIL
//-----------------------------------------------
$headers = 'From: '."\r\n";
$headers .= 'Return-Path: '."\r\n";
$headers .= 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-Type: multipart/mixed; boundary="'.$frontiere.'"';
//-----------------------------------------------
//MESSAGE TEXTE
//-----------------------------------------------
$mail = 'This is a multi-part message in MIME format.'."\r\n\r\n";
$mail .= '--'.$frontiere."\r\n";
$mail .= 'Content-Type: text/plain; charset="iso-8859-1"'."\r\n";
$mail .= 'Content-Transfer-Encoding: 8bit'."\r\n\r\n";
$mail .= $MESSAGE."\r\n\r\n";
$mail .= '--'.$frontiere."\r\n";
//-----------------------------------------------
//  FORMAT de fichier
//-----------------------------------------------
if($FORMAT=='CSV' || $FORMAT=='XLS')
{$mail.= "Content-Type: text/vnd.ms-excel; name=$FICHIER"."\r\n";}
if($FORMAT=='TXT')
{$mail.= "Content-Type: text/plain; name=$FICHIER"."\r\n";}


$mail.= "Content-Transfer-Encoding: base64\r\n";
$mail.= "Content-Disposition:attachement; filename=$FICHIER"."\r\n\r\n";
$mail.= chunk_split(base64_encode(file_get_contents($CHEMIN.$FICHIER)))."\r\n";