Jump to content

Ajouter fichier en pièce jointe mail


Recommended Posts

Bonjour,

 

Je viens vers la communauté car j'ai un souci. J'aimerais ajouter un deuxième PDF en pièce jointe (en plus de la facture) à la validation d'une commande.

 

J'ai vu que la fonction Mail::Send() de prestashop le permet. Voilà le commentaire de la fonction :

 

/**
 * Send Email
 *
 * @param array $file_attachment Array with three parameters (content, mime and name). You can use an array of array to attach multiple files
 */
public static function Send($id_lang, $template, $subject, $template_vars, $to,
 $to_name = null, $from = null, $from_name = null, $file_attachment = null, $mode_smtp = null, $template_path = _PS_MAIL_DIR_, $die = false, $id_shop = null)
{
....

 

Et voici le code que j'utilise. Il génère bien la facture mais pas le bon supplémentaire.

 

// Join PDF invoice
  if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number)
  {
   if($bonCadeau == true)
   {
    $bon_attachement['content'] = $wl_file;
    $bon_attachement['name'] = $wl_filename . 'pdf';
    $bon_attachement['mime'] = 'application/pdf';
   }
   $pdf = new PDF($order->getInvoicesCollection(), PDF::TEMPLATE_INVOICE, $this->context->smarty);
   $file_attachement['content'] = $pdf->render(false);
   $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang).sprintf('%06d', $order->invoice_number).'.pdf';
   $file_attachement['mime'] = 'application/pdf';
  }
  else
   $file_attachement = null;
  if(isset($bon_attachement) && !empty($bon_attachement))
   $wl_attachement = array($file_attachement, $bon_attachement);
  else
   $wl_attachement = $file_attachement;

 

Evidemment $wl_attchment est envoyé à la fonction Mail::Send().

 

Merci d'avance !

 

Plune

Link to comment
Share on other sites

  • 1 month later...

Oui, j'ai pu enfin trouver une réponse.

 

Voilà comment faire :

 

// Join PDF invoice
  if ((int)Configuration::get('PS_INVOICE') && $order_status->invoice && $order->invoice_number)
  {
   $pdf = new PDF($order->getInvoicesCollection(), PDF::TEMPLATE_INVOICE, $this->context->smarty);
   $file_attachement['content'] = $pdf->render(false);
   $file_attachement['name'] = Configuration::get('PS_INVOICE_PREFIX', (int)$order->id_lang).sprintf('%06d', $order->invoice_number).'.pdf';
   $file_attachement['mime'] = 'application/pdf';
  }
  else
   $file_attachement = null;
// Le bon PDF que je génère à rajouter en pièce jointe si nécessaire
  if($bonCadeau == true)
  {
   $bon_attachement['content'] = $wl_file;
   $bon_attachement['name'] = 'bon-' . $order->reference . '.pdf';
   $bon_attachement['mime'] = 'application/pdf';
  }
  if(isset($bon_attachement) && !empty($bon_attachement))
   $wl_attachement = array($file_attachement, $bon_attachement); // On fait un tableau de pièces jointes
  else
   $wl_attachement = $file_attachement;
  if (Validate::isEmail($this->context->customer->email))
   Mail::Send(
    (int)$order->id_lang,
    'order_conf',
    Mail::l('Order confirmation', (int)$order->id_lang),
    $data,
    $this->context->customer->email,
    $this->context->customer->firstname.' '.$this->context->customer->lastname,
    null,
    null,
    $wl_attachement, // On change le parametre par défaut par notre tableau
    null, _PS_MAIL_DIR_, false, (int)$order->id_shop
   );

 

En espérant avoir pu t'aider. Moi ce qui ne marchait pas, c'était juste que je génèrais mal $wl_attachment

  • Like 1
Link to comment
Share on other sites

  • 7 months later...

En espérant que ce topic n'est pas mort, je souhaiterai avoir plus d'informations sur la réalisation de cette fonction ?

Elle concerne bien le fichier  "Mail.php" ? Ou placer le pdf que l'on souhaite envoyer ?

 

 

Merci d'avance.

 

Cordialement,

Link to comment
Share on other sites

Oui merci de l'indication je garde cette idée en roue de secours disons.

Je souhaiterais plutôt envoyer un PDF unique en pièce jointe, j'ai en effet constaté que certains fichiers doivent probablement nous permettre de le faire, il suffit juste d'un peu plus de compétences que les miennes.

 

Merci et si qqn à d'autres indications n'hésitez pas ;)

Link to comment
Share on other sites

  • 2 months later...

Oui merci de l'indication je garde cette idée en roue de secours disons.

Je souhaiterais plutôt envoyer un PDF unique en pièce jointe, j'ai en effet constaté que certains fichiers doivent probablement nous permettre de le faire, il suffit juste d'un peu plus de compétences que les miennes.

 

Merci et si qqn à d'autres indications n'hésitez pas ;)

 

Hello,

 

Tu as trouvé comment faire ?

 

Amicalement,

Nico

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...