[RESOLU] joindre un fichier txt dans le mail

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] joindre un fichier txt dans le mail

Re: joindre un fichier txt dans le mail

par moogli » 23 juin 2011, 12:46

je vois, va falloir mettre ça a jour, la première chose : http://www.phpdebutant.org/article56.php pour comprendre comment utiliser les formulaires php.
idem pour les requete SQL http://www.phpdebutant.org/article66.php

une fois les choses remise a plat ça devrait aller

@+

Re: joindre un fichier txt dans le mail

par stcrea » 22 juin 2011, 23:54

Bonsoir

effectivement ce code n'est pas de moi et il date déjà de plusieurs année fais par un vieux de la vielle en retraite maintenant
et pour tous te dire je tente juste d'aider un ami pour mettre a jour comme je peut ce bazar

Dans tous les cas merci pour ton aide

Re: joindre un fichier txt dans le mail

par moogli » 22 juin 2011, 23:38

désolé mais soit ton code n'est pas complet, soit il utilise une méthode de conception dépassée et qui ne sera plus supportée (auto déclaration de variable).

par exemple
- $forcli = $Cookcli; <= la variable $Cookcli sort de nulle part
- $fornom = $Cooknom; <= la variable $Cooknom sort de nulle part
- $numbor est utilisée plein de fois n'est pas déclarée (enfin si ligne 74 dans l'utilisation de la méthode d'ajout de fichier join.
- l'ajout de la pièce jointe devrait être : $mail-> AddAttachment ("BO$numbor.txt"); si le fait d'utiliser une variable inexistante ai un sens.
- ton script est loin d'être lisible, tu ne devrais pas utiliser des variables ainsi dans les " car php peux se mélanger les pinceaux facilement (au pire utilise des { pour les délimiter, par exemple ${row->truc} le plus clair, a mon gout, étant la concaténation.
- en html, la norme utilise des balises en minuscule

je suis désolé mais ton script est assez repoussant et ne facilite pas la relecture.

pour ce qui est du reste il faut debuguer, pour cela var_dump est ta plus grande amie. Il va falloir afficher le contenu des variables pour savoir ce que tu passe en argument à cette méthode et ainsi corriger le tir (déclaration de la variable dans un 1er temps).

je suis certain que ton code te parait clair et cohérent mais vue que je ne peux être dans ta tête j'essai de comprendre avec le peu d'info que j'ai et c'est pas simple ;)

@+

Re: joindre un fichier txt dans le mail

par stcrea » 22 juin 2011, 23:23

Bonsoir,

Il sagit d'un variable de mon php

Voici le code complet
<?php




$user = "xxx";
$password = "xxx";
$database = "sxxx";
$host = "xxx";

$connect = mysql_connect($host, $user, $password) or die(mysql_error());
    mysql_select_db($database);
       
$forcli = $Cookcli;
$result = mysql_query ("select * from client where codecli = '$forcli'");
$row = mysql_fetch_object($result);

echo "<FONT SIZE=+3>";
echo "<DIV ALIGN=center><FONT COLOR=\"#0000CC\"><B>$forcli           $row->nom</B></FONT></DIV>";
echo "</FONT>";
echo "<HR SIZE=3 NOSHADE>";

$forcli = $Cookcli;
$fornom = $Cooknom;
if ($forcli < 1)
   {echo "<B><FONT SIZE=+1>Votre session est terminée, vous devez vous identifier à nouveau...</FONT></B>";}

$fordate = gmdate("Y-m-d");
$nb = 1;
if ($forcli < 1) {$nb = 0;}

 $result = mysql_query("select * from bordereau left join dossier on dossier.numdos = bordereau.numdos where  bordereau.numbor = '$numbor' and bordereau.etat = 1
        order by bordereau.numbor, bordereau.numdos ");

$nb2 = 0;
if ($result) {$nb2 = mysql_num_rows($result);}
if ($nb2 == 0) {$nb = 0;}
if ($nb > 0)
   {while ($row = mysql_fetch_object($result))
          {
          $si = " numbor = $row->numbor and numdos = $row->numdos ";
          $majbor = mysql_query
                          ("update bordereau set etat = 2 where ".$si);
          $mesbor .= "$forcli $row->typetrans $fornom;$row->numdos;";    
          $mesbor .= "$row->reference;$row->nom;$row->adresse1;$row->adresse2;";
          $mesbor .= "$row->codepostal;$row->ville;$row->codepays;";
          $mesbor .= "$row->nbcolis;$row->poids;$row->volume;$row->metreplancher;";
          $mesbor .= "$row->portdu;$row->cr;$row->crdevise;";
          $mesbor .= "$row->cr2;$row->crdev2;";
          $mesbor .= "$row->vd;$row->vddevise;$row->commentaire;";
          $mesbor .= "$row->express;$row->hayon;$row->teldesti;";
          $mesbor .= "$row->nbpalettes;$row->obspalette;\n";
          }
        ;}
$mesbor = strtoupper($mesbor);
$ligne1 = "<br>";
$ligne2 = "<br>le bordereau numéro <B>$numbor</B> est transmis";
if ($nb > 0) {
        echo "$ligne1 $ligne2";
        try {
    require "../phpmailer/class.phpmailer.php";
	$mail = new PHPmailer();
	$mail->IsQMAIL();
	$mail->Host='smtp.xxx.fr';
	$mail->Port =587;
    $mail->From = "$fornom $forcli <xxx.fr>\n";
    $mail->Paswword = 'xxx'; 
	$mail->AddAddress('[email protected]');	
    $mail->Subject = "Bordereau de chargement N $numbor";            
	$mail->message = "$mesbor";			
	$mail->Body= "$mesbor";
	$mail->headers = "Content-type: text/plain; charset=iso-8859-1\n";	
	$mail->headers = "Content-Transfert-Encoding: 7bit\n";
	$mail-> AddAttachment  ($numbor ="BO$numbor.txt");	
              
                       
                $mail->Send();
        } catch (phpmailerException $e) {
                echo $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
                echo $e->getMessage(); //Boring error messages from anything else!
}
}

if ($nb >0)
   {echo "<BR><BR><DIV ALIGN=\"center\">
                 <A HREF=\"borimp.php? numbor=$numbor\" TARGET=_blank>Imprimer le bordereau</A>
                 &nbsp;&nbsp;&nbsp;
                 <A HREF=\"bordefinitif.php\" TARGET=_self>Retour</A>
   </DIV>" ;}  
?>

Re: joindre un fichier txt dans le mail

par moogli » 22 juin 2011, 23:13

pourquoi une affectation dans l'utilisation de la méthode ?

$mail-> AddAttachment($nomfich = "BO$numbor.txt");

est tu sur du nom de fichier ?

d'où sort $numbor ?


@+

Re: joindre un fichier txt dans le mail

par stcrea » 22 juin 2011, 22:22

Bonjour,

Je n'ai pas le fichier manual.html dans mon répertoire et j'ai déjà essayer la méthode et j'ai l'erreur:

le bordereau numéro 443650 est transmisCould not access file: BO443650.txt

avec ce code car je ne sais pas comment transformer les valeurs de ma table en fichier txt
$mesbor = strtoupper($mesbor);
$ligne1 = "<br>";
$ligne2 = "<br>le bordereau numéro <B>$numbor</B> est transmis";
if ($nb > 0) {
        echo "$ligne1 $ligne2";
        try {
    require "../phpmailer/class.phpmailer.php";
	$mail = new PHPmailer();
	$mail->IsQMAIL();
	$mail->Host='xxx.xxx.fr';
	$mail->Port =587;
    $mail->From = "$fornom $forcli <xxx.fr>\n";
    $mail->Paswword = 'xxx'; 
	$mail->AddAddress('xxx@xxx');	
    $mail->  Subject = "Bordereau de chargement N $numbor";            
	$mail->  message = "$mesbor";			
	$mail->Body= " $mesbor";			
	$mail-> AddAttachment($nomfich = "BO$numbor.txt");	
              
                       
                $mail->Send();
        } catch (phpmailerException $e) {
                echo $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
                echo $e->getMessage(); //Boring error messages from anything else!
}

Re: joindre un fichier txt dans le mail

par moogli » 22 juin 2011, 21:54

salut,


tu n'utilise pas la méthode AddAttachment()

donc
<?php
$mesbor = strtoupper($mesbor);
$ligne1 = "<br>";
$ligne2 = "<br>le bordereau numéro <B>$numbor</B> est transmis";
if ($nb > 0) {
	echo $ligne1.' '.$ligne2;
	try {
		require "../phpmailer/class.phpmailer.php";
		$mail = new PHPmailer();
		$mail->IsQMAIL();
		$mail->Host='xxx';
		$mail->Port =587;
		$mail->From = $fornom.' '.$forcli;
		$mail->Paswword = 'xxxx';
		$mail->AddAddress('xxx@xxx');  
		$mail->  Subject = "Bordereau de chargement N $numbor";            
		$mail->  message = $mesbor;                  
		$mail->Body=  $mesbor;
		$mail-> AddAttachment($nomfich);
		$mail->Send();
	} catch (phpmailerException $e) {
			echo $e->errorMessage(); //Pretty error messages from PHPMailer
	} catch (Exception $e) {
			echo $e->getMessage(); //Boring error messages from anything else!
	}
}
?> 
Pour information il y a un fichier manual.html dans le répertoire de phpmailer qui t'aurais donné la solution ;)


@+

joindre un fichier txt dans le mail

par stcrea » 22 juin 2011, 21:26

Bonjour a tous je cherche désespérément a joindre des données de ma table dans un mail en fichier.txt
avec php mailer

l'ancienne version fonctionner pour l’envoie de mail en php
Mais je ne sais pas comment faire avec php mailer

sans php mailer et fonctionnel
$mesbor = strtoupper($mesbor);
$ligne1 = "<br>";
$ligne2 = "<br>le bordereau numéro <B>$numbor</B> est transmis";
if ($nb > 0) {echo "$ligne1 $ligne2";
   $recip = "[email protected]";
   $objet = "Bordereau de chargement N $numbor";
   $message = "$mesbor";
   $headers .= "From: $fornom $forcli <ddd>\n";
   $headers .= "X-priority: 1\n";
   $headers .= "Content-type: text/plain; charset=iso-8859-1\n";
   $headers .= "Content-Transfert-Encoding: 7bit\n";
   $nomfich = "BO$numbor.txt";
   $headers .= "Content-Disposition: attachment; filename=$nomfich\n";
   mail( $recip, $objet, $message, $headers);
   }
avec php mailer mais ne marche pas j'ai les données dans le mail directement
$mesbor = strtoupper($mesbor);
$ligne1 = "<br>";
$ligne2 = "<br>le bordereau numéro <B>$numbor</B> est transmis";
if ($nb > 0) {
        echo "$ligne1 $ligne2";
        try {
    require "../phpmailer/class.phpmailer.php";
	$mail = new PHPmailer();
	$mail->IsQMAIL();
	$mail->Host='xxx';
	$mail->Port =587;
        $mail->From = "$fornom $forcli <xxx>\n";
        $mail->Paswword = 'xxxx'; 
	$mail->AddAddress('xxx@xxx');	
        $mail->  Subject = "Bordereau de chargement N $numbor";            
	$mail->  message = "$mesbor";			
	$mail->Body= " $mesbor";			
		
              
                       
                $mail->Send();
        } catch (phpmailerException $e) {
                echo $e->errorMessage(); //Pretty error messages from PHPMailer
        } catch (Exception $e) {
                echo $e->getMessage(); //Boring error messages from anything else!
}
}