Bonjour,

J'ai mis une tache CRON en place pour pouvoir recevoir un récapitulatif de toutes les commandes du jour par la suite.
Ma tache CRON m'envoie bien un mail mais je n'arrive pas à trouver des solutions pour recevoir ce tableau dans le corps de ce message ( normalement c'est sensé etre un PDF mais commençons simple), actuellement je n'ai noté qu'en dur, je devrai mettre les variables mais cela ne marche pas, je déclare peut etre mon code dans le mauvais sens
Actuellement j'ai crée une requête pour exporter ma BDD en PDF via un bouton .
Ce code, vu qu'il marche très bien, j'aimerai pouvoir le réutilisé dans mon deuxième fichier qui marche très bien dans l'envoi de mail
Je suis une grande débutante en PHP,

code export


<?php 
//connexion à ma BDD perso
$connect = mysqli_connect("..", "..", "..", "..");


if(isset($_POST["submit"]))
{
 $query = "SELECT identifiant,nom,prenom,adresse,complementAdresse,ville,codePostal,mail,fixe,portable,kit,tube,aiguille,adaptateur,cartonSmall,cartonBig,etiquetteChronopost,enveloppeBulle,commentaire,dateCommande FROM exemple";
 $res = mysqli_query($connect, $query);
 if(mysqli_num_rows($res) > 0)
 {
 $export = '
 <table> 
 <tr> 
 
 <th>identifiant</th> 
 <th>nom</th> 
 <th>prenom</th>
 <th>adresse</th> 
 <th>complement adresse</th>
 <th>ville</th>
 <th>code postal</th>
 <th>mail</th>
 <th>fixe</th>
 <th>portable</th>
 <th>nbre de kits</th>
 <th>nbre de tubes</th>
 <th>nbre aiguilles</th>
 <th>nbre adaptateur</th>
 <th>nbre petit carton</th>
 <th>nbre grand carton</th>
 <th>nbre etiquette chronopost</th>
 <th>nbre enveloppe bulle</th>
 <th>commentaire</th>
 <th>date commande</th>
 
 </tr>
 ';
 while($row = mysqli_fetch_array($res))
 {
 $export .= '
 <tr>

 <td>'.$row["identifiant"].'</td> 
 <td>'.$row["nom"].'</td> 
 <td>'.$row["prenom"].'</td>
 <td>'.$row["adresse"].'</td> 
 <td>'.$row["complementAdresse"].'</td> 
 <td>'.$row["ville"].'</td> 
 <td>'.$row["codePostal"].'</td>
 <td>'.$row["mail"].'</td>
 <td>'.$row["fixe"].'</td>
 <td>'.$row["portable"].'</td>
 <td>'.$row["kit"].'</td>
 <td>'.$row["tube"].'</td>
 <td>'.$row["aiguille"].'</td>
 <td>'.$row["adaptateur"].'</td>
 <td>'.$row["cartonSmall"].'</td>
 <td>'.$row["cartonBig"].'</td>
 <td>'.$row["etiquetteChronopost"].'</td>
 <td>'.$row["enveloppeBulle"].'</td>
 <td>'.$row["commentaire"].'</td>
 <td>'.$row["dateCommande"].'</td>

 
 </tr>
 ';
 }
 $export .= '</table>';
 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=commande-ifce.xls');
 echo $export;
 }
}

?>



code envoi mail

<?php
// Plusieurs destinataires
$to  = '';

// Sujet
$subject = 'Calendrier des anniversaires pour Août';

// message
$message = '
     <html>
      <head>
       <title>Calendrier des anniversaires pour Août</title>
      </head>
      <body>
       <p>Voici les anniversaires à venir au mois d\'Août !</p>
       <table>
        <tr>
         <th>Personne</th><th>Jour</th><th>Mois</th><th>Année</th>
        </tr>
        <tr>
         <td>Josiane</td><td>3</td><td>Août</td><td>1970</td>
        </tr>
        <tr>
         <td>Emma</td><td>26</td><td>Août</td><td>1973</td>
        </tr>
       </table>
      </body>
     </html>
     ';

// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

// En-têtes additionnels
$headers[] = 'To: ';
$headers[] = 'From:';
$headers[] = 'Cc: ';
$headers[] = 'Bcc: ';

// Envoi
mail($to, $subject, $message, implode("\r\n", $headers));

Salut si je comprend bien tu veux ton tableau "$export" dans le corp de ton mail.

Actuellement tu ne l'utilise pas dans l'envoi de ton mail.
Salut,

je n'ai pas testé, mais si tes 2 bouts de code fonctionnent, il faut juste remplacer $message par $export dans ta fonction mail, ou inclure $export dans $message


<?php 
//connexion à ma BDD perso
$connect = mysqli_connect("..", "..", "..", "..");


if(isset($_POST["submit"]))
{
 $query = "SELECT identifiant,nom,prenom,adresse,complementAdresse,ville,codePostal,mail,fixe,portable,kit,tube,aiguille,adaptateur,cartonSmall,cartonBig,etiquetteChronopost,enveloppeBulle,commentaire,dateCommande FROM exemple";
 $res = mysqli_query($connect, $query);
 if(mysqli_num_rows($res) > 0)
 {
 $export = '
 <table> 
 <tr> 
 
 <th>identifiant</th> 
 <th>nom</th> 
 <th>prenom</th>
 <th>adresse</th> 
 <th>complement adresse</th>
 <th>ville</th>
 <th>code postal</th>
 <th>mail</th>
 <th>fixe</th>
 <th>portable</th>
 <th>nbre de kits</th>
 <th>nbre de tubes</th>
 <th>nbre aiguilles</th>
 <th>nbre adaptateur</th>
 <th>nbre petit carton</th>
 <th>nbre grand carton</th>
 <th>nbre etiquette chronopost</th>
 <th>nbre enveloppe bulle</th>
 <th>commentaire</th>
 <th>date commande</th>
 
 </tr>
 ';
 while($row = mysqli_fetch_array($res))
 {
 $export .= '
 <tr>

 <td>'.$row["identifiant"].'</td> 
 <td>'.$row["nom"].'</td> 
 <td>'.$row["prenom"].'</td>
 <td>'.$row["adresse"].'</td> 
 <td>'.$row["complementAdresse"].'</td> 
 <td>'.$row["ville"].'</td> 
 <td>'.$row["codePostal"].'</td>
 <td>'.$row["mail"].'</td>
 <td>'.$row["fixe"].'</td>
 <td>'.$row["portable"].'</td>
 <td>'.$row["kit"].'</td>
 <td>'.$row["tube"].'</td>
 <td>'.$row["aiguille"].'</td>
 <td>'.$row["adaptateur"].'</td>
 <td>'.$row["cartonSmall"].'</td>
 <td>'.$row["cartonBig"].'</td>
 <td>'.$row["etiquetteChronopost"].'</td>
 <td>'.$row["enveloppeBulle"].'</td>
 <td>'.$row["commentaire"].'</td>
 <td>'.$row["dateCommande"].'</td>

 
 </tr>
 ';
 }
 $export .= '</table>';



// Plusieurs destinataires
$to  = '';

// Sujet
$subject = 'Calendrier des anniversaires pour Août';

// message : ici j'ai supprimé $message et je ne l'utilise pas dans la fonction mail.
//on pourrait aussi définir une variable message qui contiendrait d'autre trucs et y intégrer $export à l’intérieur : 
//$message = '<html><body> Voila l'export de la BDD '.$export.'</body></html>';

// Pour envoyer un mail HTML, l'en-tête Content-type doit être défini
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

// En-têtes additionnels
$headers[] = 'To: ';
$headers[] = 'From:';
$headers[] = 'Cc: ';
$headers[] = 'Bcc: ';

// Envoi
//mail($to, $subject, $message, implode("\r\n", $headers)); // dans le cas où on garde la variable $message et que l'on y intègre la variable $export dedans
mail($to, $subject, $export, implode("\r\n", $headers)); //ici on envoie la variable $export plutot que $message

upload/1652950485-84381-2022-05-1910h5014.png Ok, je reçois bien dorénavant mon tableau dans mon mail automatisé Smiley smile

Le problème c'est que mon style inline n'est pas pris en compte dans mon mail et que lorsque que j'imprime ce mail, je n'ai pas la totalité de ce tableau Smiley decu

En faite, il faudrait plutôt que je reçois un mail automatisé avec ce tableau en pièce jointe

Je n'ai pas encore trouver de documentation pour générer automatiquement un fichier Excel par mail...
Au départ de mon développement, j'avais mis un bouton export pour exporter ce fichier Excel via une page web
Modifié par gabinou (19 May 2022 - 10:54)
Hum, il faut que cela contiennent d'autre truc que la pièce jointe ou pas ?
- Si oui, il doit falloir découper le message en plusieurs parties pour séparer la partie message au format html de la partie pièce jointe (il faudra chercher comment ça se fait j'ai un vague souvenir juste qu'il faut séparer entre chaque entête)

- Si non il doit falloir remplacer le header pour obtenir ce que tu avais dans ton script de création de fichier au départ je pense.
Les 2 lignes que je n'ai pas gardé dans ta création de fichier

 header('Content-Type: application/xls');
 header('Content-Disposition: attachment; filename=commande-ifce.xls');

Les 2 lignes que j'ai gardé dans ta création de mail :

$headers[] = 'Content-type: text/html; charset=iso-8859-1';

Le mix des 2 pour que cela fasse un fichier :

$headers[] = 'Content-type: application/xls';
$headers[] = 'Content-Disposition: attachment; filename=commande-ifce.xls';

Je n'ai toujours rien testé Smiley sweatdrop mais cela devrait être ça dans l'idée je pense Smiley lol
Modifié par Mathieuu (19 May 2022 - 12:06)