- Posts: 10
- Thank you received: 1
Pièce jointe personnalisée
13 years 8 months ago #88090
by Baptiste
Pièce jointe personnalisée was created by Baptiste
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.
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.
13 years 7 months ago - 13 years 7 months ago #88287
by nicolas
Replied by nicolas on topic Pièce jointe personnalisée
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:
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.
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:
Code:
function onBeforeMailSend(&$data,&$mailer){
if($data->mail_name!='order_admin_notification') return;
$mailer->AddAttachment('/my/file/absolute/path/filename.csv','filename.csv');
}
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: 13 years 7 months ago by nicolas.
The following user(s) said Thank You: Baptiste
Please Log in or Create an account to join the conversation.
13 years 7 months ago #88401
by Baptiste
Replied by Baptiste on topic Pièce jointe personnalisée
Très bien ! Je testerai plus tard.
Merci !
Merci !
Please Log in or Create an account to join the conversation.
13 years 7 months ago #88943
by Baptiste
Replied by Baptiste on topic Pièce jointe personnalisée
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>anyone@none.com
<authorUrl> www.anywhere.com
<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.
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>anyone@none.com
<authorUrl> www.anywhere.com
<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.
13 years 7 months ago - 13 years 7 months ago #88990
by Baptiste
Replied by Baptiste on topic Pièce jointe personnalisée
Victoire.
pluginmail.xml
pluginmail.php
Merci ^^
pluginmail.xml
Code:
<?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>
Code:
<?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: 13 years 7 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.224 seconds