Pièce jointe personnalisée

  • Posts: 10
  • Thank you received: 1
11 years 3 months ago #88090

Bonjour,

Lors de la création d'une commande, je crée un fichier .csv sur le serveur
-> modification du fichier mail\order_creation_notification.html.php
Ok

Quand la commande est passée, 2 mails partent, celui du client et celui de l'admin.
Mon problème est de joindre le fichier à l'admin en pièce jointe du mail.

J'ai rajouté un bout de code dans le order_admin_notification.html.php; mais (je suppose) comme la clé aléatoire de limite appelée généralement "boundary" est différente de celle de l'entête du mail, ça ne fonctionne pas. Et je n'arrive pas à trouver la fonction pour modifier l'entête des mails..

J'ai donc 2 choix (apparemment) :
- récupérer la clef de l'entête depuis le fichier order_admin_notif.
- définir à un endroit la clef de manière globale pour être utilisée dans l'entête et dans le order_admin_notif

Dans tous les cas mon problème est de cerner où l'entête est générée.

La fonction mail ne passe pas par la fonction MailSend de phpmailer.php dans laquelle on trouve la fonction php mail.
Donc je ne comprends pas comment les mails partent !!

Version Business.

Baptiste G.

Please Log in or Create an account to join the conversation.

  • Posts: 81597
  • Thank you received: 13081
  • MODERATOR
11 years 3 months ago #88287

Bonjour,

Pour ajouter un fichier en pièce jointe à un email dans HikaShop, il suffit de faire un plugin HikaShop implémentant le trigger onBeforeMailSend(&$data,&$mailer).

La fonction serait du genre:

function onBeforeMailSend(&$data,&$mailer){
if($data->mail_name!='order_admin_notification') return;
$mailer->AddAttachment('/my/file/absolute/path/filename.csv','filename.csv');
}
Dans $data, vous avez toutes les infos de la commande si besoin.

C'est le système que nous utilisons pour le plugin invoice PDF que nous proposons ici:
www.hikashop.com/en/component/hikashop/product/cid-18.html
Il crée un PDF et l'attache à l'email de confirmation de commande.

Last edit: 11 years 3 months ago by nicolas.
The following user(s) said Thank You: Baptiste

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 1
11 years 2 months ago #88401

Très bien ! Je testerai plus tard.
Merci !

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 1
11 years 2 months ago #88943

Le programme ne passe pas dans le trigger, donc j'ai du faire une erreur quelque part...
Je vous copier mes 2 fichiers que j'ai importé :

plugin_mail.php :

<? defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');

class plgContentNameofplugin extends JPlugin {

function plgMailBaptiste(&$subject, $params) {

/*pour tester si il passe ici;*/
$fp = fopen("./error_log_bat1.txt", "a+");
$donneesAjout = "test1";
fputs($fp, $donneesAjout);

parent::__construct($subject, $params);
}

function onBeforeMailSend(&$data, &$mailer) {
var_dump($data);
/*pour tester si il passe ici*/
$fp = fopen("./error_log_bat2.txt", "a+");
$donneesAjout = "test2";
fputs($fp, $donneesAjout);

if ($data->mail_name != 'order_admin_notification')
return;
$mailer->AddAttachment('./test.csv', 'test.csv');

return true;
}

}
?>

plugin_mail.xml :
<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="plugin_mail">
<name>plg_plugin_mail</name>
<version>2.5.0</version>
<creationDate>January 2013</creationDate>
<author>Joomla! Baptiste</author>
<authorEmail>This email address is being protected from spambots. You need JavaScript enabled to view it.</authorEmail>
<authorUrl> www.anywhere.com </authorUrl>
<copyright>Copyright (C) - All rights reserved.</copyright>
<license>GNU</license>
<description>osef</description>
<files>
<filename
plugin="plugin_mail">plugin_mail.php
</filename>
</files>
<config>
<fields name="params">
<fieldset name="basic">
<field
name="public_key"
type="text"
default=""
label="PLG_RECAPTCHA_PUBLIC_KEY_LABEL"
description="PLG_RECAPTCHA_PUBLIC_KEY_DESC"
required="true"
filter="string"
size="50" />
</fieldset>
</fields>
</config>
</extension>

Donc le programme ne me crée rien à l'envoie du mail.
(j'ai évidemment essayé mon bout de code test avant)
J'en déduis qu'il ne passe pas dans la fonction trigger.
Le fichier xml, est un copié d'un autre plugin, remplit à la va vite.

Please Log in or Create an account to join the conversation.

  • Posts: 10
  • Thank you received: 1
11 years 2 months ago #88990

Victoire.

pluginmail.xml

<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="hikashop">
    <name>PluginMail</name>
    <description>plugin perso</description>
    <files>
        <filename
            plugin="pluginmail">pluginmail.php
        </filename>
    </files>
</extension>
pluginmail.php
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');


class plgHikashopPluginMail extends JPlugin {

    public function onBeforeMailSend(&$data, &$mailer) {
        var_dump($data);
        /* on cree le fichier des devis */
        $fp = fopen("./error_log_bat2.txt", "a+");
        $donneesAjout = "test2";
        fputs($fp, $donneesAjout);

        if ($data->mail_name != 'order_admin_notification')
            return;
        $mailer->AddAttachment('./test.csv', 'test.csv');

        return true;
    }
}
?>

Merci ^^

Last edit: 11 years 2 months ago by Baptiste.
The following user(s) said Thank You: Xavier

Please Log in or Create an account to join the conversation.

Time to create page: 0.066 seconds
Powered by Kunena Forum