zabza Posted March 20, 2014 Share Posted March 20, 2014 (edited) Třeba to někomu pomůže. Problém obchodních podmínek jako přílohy emailu jsem řešil již na konci roku, aby od 1.1.2014 bylo vše připraveno. Vycházel jsem z toho, že nejideálnější je přiložit je do emailu potvrzujícího objednávku. Jako jejich přílohu jsem přidal na konec pro jistotu i vzorový formulář pro odstoupení od smlouvy do 14 dnů. Celý dokument jsem vyhotovil v PDF a nahrál do kořenového adresáře obchodu. Odkaz na tento soubor ke stažení jsem přidal i na konec znení OP které jsou zveřejněny na stránkách obchodu. Po tomto nahrání jsem šel do souboru ..classes/Mail.php a vyhledal řádek 304 /* Send mail */ $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); a před něj jsem vložil následující: if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("obchodni_podminky.pdf"), "Obchodní podmínky.pdf", "application/pdf")); Pochopitelně pokud je soubor obchodních podmínek jinde než v kořenovém adresáři je nutné uvést cestu k souboru obchodni_podminky.pdf. Platí pro v. 1.5.x --- Pár dní jsem tu nebyl, tak doplňuji, že 100% vyzkoušené to mám na 1.5.6.2 Je skutečně možné, že v jiných verzích to nefunguje. Edited April 5, 2014 by zabza (see edit history) 6 Link to comment Share on other sites More sharing options...
berka.pavel Posted March 20, 2014 Share Posted March 20, 2014 takhle brát jiným práci... dávat to zadarmo davům :-D good job, man! 1 Link to comment Share on other sites More sharing options...
ender666 Posted March 31, 2014 Share Posted March 31, 2014 Díky, ale bohužel mi to nefunguje na 1.5.2.0. Nakopíroval jsem obchodni_podminky.pdf do rootu, přidal kód do classes/Mail.php hned za /* Send mail */ Nemáte nějaký nápad proč se příloha neposílá? Nebo mám špatně cestu k souboru? /* Send mail */ if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("obchodni_podminky.pdf"), "Obchodní_podmínky.pdf", "application/pdf")); $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); return $send; } catch (Swift_Exception $e) { return false; } } Celý Mail.php zde: <?php /* * 2007-2012 PrestaShop * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to [email protected] so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to http://www.prestashop.com for more information. * * @author PrestaShop SA <[email protected]> * @copyright 2007-2012 PrestaShop SA * @version Release: $Revision: 6844 $ * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) * International Registered Trademark & Property of PrestaShop SA */ include_once(_PS_SWIFT_DIR_.'Swift.php'); include_once(_PS_SWIFT_DIR_.'Swift/Connection/SMTP.php'); include_once(_PS_SWIFT_DIR_.'Swift/Connection/NativeMail.php'); include_once(_PS_SWIFT_DIR_.'Swift/Plugin/Decorator.php'); class MailCore { const TYPE_HTML = 1; const TYPE_TEXT = 2; const TYPE_BOTH = 3; /** * Send Email * * @param int $id_lang Language of the email (to translate the template) * @param string $template Template: the name of template not be a var but a string ! * @param string $subject * @param string $template_vars * @param string $to * @param string $to_name * @param string $from * @param string $from_name * @param array $file_attachment Array with three parameters (content, mime and name). You can use an array of array to attach multiple files * @param bool $modeSMTP * @param string $template_path * @param bool $die */ 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) { $theme_path = _PS_THEME_DIR_; // Get the path of theme by id_shop if exist if (is_numeric($id_shop) && $id_shop) { $shop = new Shop((int)$id_shop); $theme_name = $shop->getTheme(); if (_THEME_NAME_ != $theme_name) $theme_path = _PS_ROOT_DIR_.'/themes/'.$theme_name.'/'; } $configuration = Configuration::getMultiple(array( 'PS_SHOP_EMAIL', 'PS_MAIL_METHOD', 'PS_MAIL_SERVER', 'PS_MAIL_USER', 'PS_MAIL_PASSWD', 'PS_SHOP_NAME', 'PS_MAIL_SMTP_ENCRYPTION', 'PS_MAIL_SMTP_PORT', 'PS_MAIL_METHOD', 'PS_MAIL_TYPE' )); if (!isset($configuration['PS_MAIL_SMTP_ENCRYPTION'])) $configuration['PS_MAIL_SMTP_ENCRYPTION'] = 'off'; if (!isset($configuration['PS_MAIL_SMTP_PORT'])) $configuration['PS_MAIL_SMTP_PORT'] = 'default'; // Sending an e-mail can be of vital importance for the merchant, when his password is lost for example, so we must not die but do our best to send the e-mail if (!isset($from) || !Validate::isEmail($from)) $from = $configuration['PS_SHOP_EMAIL']; if (!Validate::isEmail($from)) $from = null; // $from_name is not that important, no need to die if it is not valid if (!isset($from_name) || !Validate::isMailName($from_name)) $from_name = $configuration['PS_SHOP_NAME']; if (!Validate::isMailName($from_name)) $from_name = null; // It would be difficult to send an e-mail if the e-mail is not valid, so this time we can die if there is a problem if (!is_array($to) && !Validate::isEmail($to)) { Tools::dieOrLog(Tools::displayError('Error: parameter "to" is corrupted'), $die); return false; } if (!is_array($template_vars)) $template_vars = array(); // Do not crash for this error, that may be a complicated customer name if (is_string($to_name) && !empty($to_name) && !Validate::isMailName($to_name)) $to_name = null; if (!Validate::isTplName($template)) { Tools::dieOrLog(Tools::displayError('Error: invalid e-mail template'), $die); return false; } if (!Validate::isMailSubject($subject)) { Tools::dieOrLog(Tools::displayError('Error: invalid e-mail subject'), $die); return false; } /* Construct multiple recipients list if needed */ if (is_array($to) && isset($to)) { $to_list = new Swift_RecipientList(); foreach ($to as $key => $addr) { $to_name = null; $addr = trim($addr); if (!Validate::isEmail($addr)) { Tools::dieOrLog(Tools::displayError('Error: invalid e-mail address'), $die); return false; } if (is_array($to_name)) { if ($to_name && is_array($to_name) && Validate::isGenericName($to_name[$key])) $to_name = $to_name[$key]; } if ($to_name == null) $to_name = $addr; /* Encode accentuated chars */ $to_list->addTo($addr, '=?UTF-8?B?'.base64_encode($to_name).'?='); } $to_plugin = $to[0]; $to = $to_list; } else { /* Simple recipient, one address */ $to_plugin = $to; if ($to_name == null) $to_name = $to; $to = new Swift_Address($to, '=?UTF-8?B?'.base64_encode($to_name).'?='); } try { /* Connect with the appropriate configuration */ if ($configuration['PS_MAIL_METHOD'] == 2) { if (empty($configuration['PS_MAIL_SERVER']) || empty($configuration['PS_MAIL_SMTP_PORT'])) { Tools::dieOrLog(Tools::displayError('Error: invalid SMTP server or SMTP port'), $die); return false; } $connection = new Swift_Connection_SMTP($configuration['PS_MAIL_SERVER'], $configuration['PS_MAIL_SMTP_PORT'], ($configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'ssl') ? Swift_Connection_SMTP::ENC_SSL : (($configuration['PS_MAIL_SMTP_ENCRYPTION'] == 'tls') ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_OFF)); $connection->setTimeout(4); if (!$connection) return false; if (!empty($configuration['PS_MAIL_USER'])) $connection->setUsername($configuration['PS_MAIL_USER']); if (!empty($configuration['PS_MAIL_PASSWD'])) $connection->setPassword($configuration['PS_MAIL_PASSWD']); } else $connection = new Swift_Connection_NativeMail(); if (!$connection) return false; $swift = new Swift($connection, Configuration::get('PS_MAIL_DOMAIN')); /* Get templates content */ $iso = Language::getIsoById((int)$id_lang); if (!$iso) { Tools::dieOrLog(Tools::displayError('Error - No ISO code for email'), $die); return false; } $template = $iso.'/'.$template; $module_name = false; $override_mail = false; // get templatePath if (preg_match('#'.__PS_BASE_URI__.'modules/#', $template_path) && preg_match('#modules/([a-z0-9_-]+)/#ui', $template_path, $res)) $module_name = $res[1]; if ($module_name !== false && (file_exists($theme_path.'modules/'.$module_name.'/mails/'.$template.'.txt') || file_exists($theme_path.'modules/'.$module_name.'/mails/'.$template.'.html'))) $template_path = $theme_path.'modules/'.$module_name.'/mails/'; else if (file_exists($theme_path.'mails/'.$template.'.txt') || file_exists($theme_path.'mails/'.$template.'.html')) { $template_path = $theme_path.'mails/'; $override_mail = true; } else if (!file_exists($template_path.$template.'.txt') || !file_exists($template_path.$template.'.html')) { Tools::dieOrLog(Tools::displayError('Error - The following e-mail template is missing:').' '.$template_path.$template.'.txt', $die); return false; } $template_html = file_get_contents($template_path.$template.'.html'); $template_txt = strip_tags(html_entity_decode(file_get_contents($template_path.$template.'.txt'), null, 'utf-8')); if ($override_mail && file_exists($template_path.$iso.'/lang.php')) include_once($template_path.$iso.'/lang.php'); else if ($module_name && file_exists($template_path.$iso.'/lang.php')) include_once($theme_path.'mails/'.$iso.'/lang.php'); else include_once(dirname(__FILE__).'/../mails/'.$iso.'/lang.php'); /* Create mail and attach differents parts */ $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME').'] '.$subject); $message->headers->setEncoding('Q'); if (Configuration::get('PS_LOGO_MAIL') !== false && file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL'))) $template_vars['{shop_logo}'] = $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL')))); else if (file_exists(_PS_IMG_DIR_.'logo.jpg')) $template_vars['{shop_logo}'] = $message->attach(new Swift_Message_Image(new Swift_File(_PS_IMG_DIR_.Configuration::get('PS_LOGO')))); else $template_vars['{shop_logo}'] = ''; $template_vars['{shop_name}'] = Tools::safeOutput(Configuration::get('PS_SHOP_NAME')); $template_vars['{shop_url}'] = Tools::getShopDomain(true, true).__PS_BASE_URI__.'index.php'; $template_vars['{my_account_url}'] = Context::getContext()->link->getPageLink('my-account', true, Context::getContext()->language->id); $template_vars['{guest_tracking_url}'] = Context::getContext()->link->getPageLink('guest-tracking', true, Context::getContext()->language->id); $template_vars['{history_url}'] = Context::getContext()->link->getPageLink('history', true, Context::getContext()->language->id); $swift->attachPlugin(new Swift_Plugin_Decorator(array($to_plugin => $template_vars)), 'decorator'); if ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_TEXT) $message->attach(new Swift_Message_Part($template_txt, 'text/plain', '8bit', 'utf-8')); if ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_HTML) $message->attach(new Swift_Message_Part($template_html, 'text/html', '8bit', 'utf-8')); if ($file_attachment && !empty($file_attachment)) { // Multiple attachments? if (!is_array(current($file_attachment))) $file_attachment = array($file_attachment); foreach ($file_attachment as $attachment) if (isset($attachment['content']) && isset($attachment['name']) && isset($attachment['mime'])) $message->attach(new Swift_Message_Attachment($attachment['content'], $attachment['name'], $attachment['mime'])); } /* Send mail */ if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("obchodni_podminky.pdf"), "obchodni_podminky.pdf", "application/pdf")); $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); return $send; } catch (Swift_Exception $e) { return false; } } public static function sendMailTest($smtpChecked, $smtpServer, $content, $subject, $type, $to, $from, $smtpLogin, $smtpPassword, $smtpPort = 25, $smtpEncryption) { $swift = null; $result = false; try { if ($smtpChecked) { $smtp = new Swift_Connection_SMTP($smtpServer, $smtpPort, ($smtpEncryption == 'off') ? Swift_Connection_SMTP::ENC_OFF : (($smtpEncryption == 'tls') ? Swift_Connection_SMTP::ENC_TLS : Swift_Connection_SMTP::ENC_SSL)); $smtp->setUsername($smtpLogin); $smtp->setpassword($smtpPassword); $smtp->setTimeout(5); $swift = new Swift($smtp, Configuration::get('PS_MAIL_DOMAIN')); } else $swift = new Swift(new Swift_Connection_NativeMail(), Configuration::get('PS_MAIL_DOMAIN')); $message = new Swift_Message($subject, $content, $type); if ($swift->send($message, $to, $from)) $result = true; $swift->disconnect(); } catch (Swift_ConnectionException $e) { $result = $e->getMessage(); } catch (Swift_Message_MimeException $e) { $result = $e->getMessage(); } return $result; } /** * This method is used to get the translation for email Object. * For an object is forbidden to use htmlentities, * we have to return a sentence with accents. * * @param string $string raw sentence (write directly in file) */ public static function l($string, $id_lang = null, Context $context = null) { global $_LANGMAIL; if (!$context) $context = Context::getContext(); $key = str_replace('\'', '\\\'', $string); if ($id_lang == null) $id_lang = (!isset($context->language) || !is_object($context->language)) ? (int)Configuration::get('PS_LANG_DEFAULT') : (int)$context->language->id; $iso_code = Language::getIsoById((int)$id_lang); $file_core = _PS_ROOT_DIR_.'/mails/'.$iso_code.'/lang.php'; if (Tools::file_exists_cache($file_core) && empty($_LANGMAIL)) include_once($file_core); $file_theme = _PS_THEME_DIR_.'mails/'.$iso_code.'/lang.php'; if (Tools::file_exists_cache($file_theme)) include_once($file_theme); if (!is_array($_LANGMAIL)) return (str_replace('"', '"', $string)); if (array_key_exists($key, $_LANGMAIL) && !empty($_LANGMAIL[$key])) $str = $_LANGMAIL[$key]; else $str = $string; return str_replace('"', '"', stripslashes($str)); } } Link to comment Share on other sites More sharing options...
mello Posted April 1, 2014 Share Posted April 1, 2014 Asi máš příliš starou Prestu. Mě to také na 1.5.3.1 nefunguje, zatím jsem nepřišel na to proč. Mám ověřeno, že to funguje na 1.5.6.2 a 1.6.0.5. Link to comment Share on other sites More sharing options...
empty2 Posted April 2, 2014 Share Posted April 2, 2014 Já jsem to udělal jednodušeji, Obchodní podmínky(i s tím přiblým formulářem na odstoupení od smlouvy) jsem nakopíroval do potvrzujícího mailu. Práce na 2 minuty, je na zákazníkovi, jestli si to odroluje... ČOIka by měla být spokojená Link to comment Share on other sites More sharing options...
mello Posted April 2, 2014 Share Posted April 2, 2014 To je dobrá prasárna Mám to prozatím řešeno odkazem na pdf ke stažení. Doporučuji to i pokud máte přílohu. Už několikrát se mi stalo, že jsem měl zákazníka, který uvedl firemní email a jejich firewall nepustil žádné přílohy. Znáte zákazníky, můžou se otáčet na tom, že nic v emailu nebylo a tak požadují peníze za rok staré zařízení a ČOI se většinou moc obtěžuje s vyšetřováním kdo má pravdu Ten formulář k odstoupení je taky povinný? Platí pro něj to samé co pro OP? A ČOI spokojená? Jelikož každý právník si tento bod vykládá jinak, tak ani ČOI neví jak to má být správně Link to comment Share on other sites More sharing options...
vanad Posted April 3, 2014 Share Posted April 3, 2014 To je dobrá prasárna Mám to prozatím řešeno odkazem na pdf ke stažení. Doporučuji to i pokud máte přílohu. Už několikrát se mi stalo, že jsem měl zákazníka, který uvedl firemní email a jejich firewall nepustil žádné přílohy. Znáte zákazníky, můžou se otáčet na tom, že nic v emailu nebylo a tak požadují peníze za rok staré zařízení a ČOI se většinou moc obtěžuje s vyšetřováním kdo má pravdu Ten formulář k odstoupení je taky povinný? Platí pro něj to samé co pro OP? A ČOI spokojená? Jelikož každý právník si tento bod vykládá jinak, tak ani ČOI neví jak to má být správně Formulář povinný není, ale informace o odstoupení povinná je. http://www.shoptet.cz/ke-stazeni/ Link to comment Share on other sites More sharing options...
vanad Posted April 3, 2014 Share Posted April 3, 2014 zabza má v návodu drobnou chybu: "obchodni_podminky.pdf", "Obchodní podmínky.pdf". Název musí být stejný. Pokud někdo bude chtít dát do přílohy více souborů nebo má multistore, tak návod je zde: http://forum.c4.cz/prestashop-1-5-pdf-soubor-jako-priloha-v-odeslanem-emailu-t4680.html Link to comment Share on other sites More sharing options...
empty2 Posted April 3, 2014 Share Posted April 3, 2014 mello: Dokázal bys mi stručně vysvětlit, proč je nakopírování Obch. podmínek do mailu "Prasárna" ? Mě to přijde jako jednoduché a funkční řešení. Ale prasárna? Není to trochu silné? Link to comment Share on other sites More sharing options...
empty2 Posted April 3, 2014 Share Posted April 3, 2014 mello: Mimochodem tvoje řešení s odkazem mi přijde jako v podstatě zbytečné, vůbec neřeší problém. Ale chápu, že teď asi frčí přílohy... Link to comment Share on other sites More sharing options...
ender666 Posted April 3, 2014 Share Posted April 3, 2014 Zkoušel jsem to i takhle jak to máš, oba názvy stejné, ale na 1.5.2.0 to stejně neposílá. Ale už to moc neřeším, čekám až vydají ještě jednu 1.6 a upgraduju.. Link to comment Share on other sites More sharing options...
mello Posted April 3, 2014 Share Posted April 3, 2014 mello: Dokázal bys mi stručně vysvětlit, proč je nakopírování Obch. podmínek do mailu "Prasárna" ? Protože třeba já mám obchodní podmínky na 4 strany a to je hodně scrollování. Někteří zákazníci jsou schopni na tuto zprávu odpovídat a odpověď vložit doprostřed, nebo na konec... takže budeš scrollovat také. Odkaz doporučuji mít zároveň s přílohou, z důvodu že firemní firewall zákazníkovi odstraní přílohu, nemůže tak říct, že neměl možnost pdf získat a uchovat. Prostě když chce zákazník eshopaře bít... Link to comment Share on other sites More sharing options...
djmila Posted April 3, 2014 Share Posted April 3, 2014 Trochu se zamyslete ... myslíte si že od scrollování je to proč se toto zavádí? Celá věc se má tak , člověk musí mít možnost ji buď stáhnout(nebo mu je zaslán) a nebo by dle mého úsudku stačilo tlačítko PRINT .. důvod je jasný z důvodu ochrany spotřebitele aby někdo nemohl udělat po transakci změnu v obch. podm. pro případ sporu. Pravda je že scrollovat 4x A4 ... to je celkem šílené Link to comment Share on other sites More sharing options...
empty2 Posted April 4, 2014 Share Posted April 4, 2014 No jasně, ale když necháš jenom odkaz, tak to co je v odkazu můžeš libovolně měnit, to by asi nemělo jít. Resp. těžko budeš dokazovat, co přesně bylo tehdy a tehdy na onom odkazu ke stažení. Prostě je potřeba doložit, co jsi odeslal, takže příloha nebo mail... Já mám v každém notifikační mailu upozornění, že se jedná o notifikační mail, aby na něj příjemce neodpovídal. V potvrzení objednávky mám navíc formulku, že v souladu s novým Občanským zákoníkem jsou součástí potvrzení objednávky Obchodní podmínky a Formulář na odstoupení. Takže je na tom kterém zákazníkovi, jestli si ty podmínky přečte nebo ne, prostě je má v mailu. Já mám jasný důkaz, že jsem zákazníka s podmínkami seznámil.... Nevidím žádný problém. Link to comment Share on other sites More sharing options...
djmila Posted April 4, 2014 Share Posted April 4, 2014 jestliže jsi tvé OP vytisknu tak si můžeš měnit co chceš, ( samozřejmě musí to mít náležitou hlavu a patu ) Ale , odeslání beru jako dobrou možnost. Link to comment Share on other sites More sharing options...
zabza Posted April 5, 2014 Author Share Posted April 5, 2014 Díky, ale bohužel mi to nefunguje na 1.5.2.0. Nakopíroval jsem obchodni_podminky.pdf do rootu, přidal kód do classes/Mail.php hned za /* Send mail */ Nemáte nějaký nápad proč se příloha neposílá? Nebo mám špatně cestu k souboru? Nejspíš to bude tím, jak jsem i dnes doplnil do původního příspěvku, že jsem to zkoušel na 1.5.6.2 A nebo tím, že jsem to vkládal PŘED /* Send mail */ zabza má v návodu drobnou chybu: "obchodni_podminky.pdf", "Obchodní podmínky.pdf". Název musí být stejný. Pokud někdo bude chtít dát do přílohy více souborů nebo má multistore, tak návod je zde: http://forum.c4.cz/prestashop-1-5-pdf-soubor-jako-priloha-v-odeslanem-emailu-t4680.html Nemám. První obchodni_podminky.pdf je název souboru v rootu. Druhé, ty s českou interpunkcí, vytvoří to, že v příloze se zobrazuje název přílohy s interpunkcí a pokud si je příjemce stáhne tak se v počítači uloží s název s touto interpunkcí. Mě to tak alespoň funguje. (Win XP, SP3) No jasně, ale když necháš jenom odkaz, tak to co je v odkazu můžeš libovolně měnit, to by asi nemělo jít. Resp. těžko budeš dokazovat, co přesně bylo tehdy a tehdy na onom odkazu ke stažení. Prostě je potřeba doložit, co jsi odeslal, takže příloha nebo mail... Já mám v každém notifikační mailu upozornění, že se jedná o notifikační mail, aby na něj příjemce neodpovídal. V potvrzení objednávky mám navíc formulku, že v souladu s novým Občanským zákoníkem jsou součástí potvrzení objednávky Obchodní podmínky a Formulář na odstoupení. Takže je na tom kterém zákazníkovi, jestli si ty podmínky přečte nebo ne, prostě je má v mailu. Já mám jasný důkaz, že jsem zákazníka s podmínkami seznámil.... Nevidím žádný problém. V některých aplikacích, které provozuju je výslovně uvedeno, že na email nemají odpovídat, že nebude doručen a kolikpak jich asi odpoví? Ano, správně, je to víc než polovina. jestliže jsi tvé OP vytisknu tak si můžeš měnit co chceš, ( samozřejmě musí to mít náležitou hlavu a patu ) Ale , odeslání beru jako dobrou možnost. Pokud to vezmeme skutečně důsledně, je tištění i posílání obchodních podmínek je a jen obyčejná buzerace. Pokud si to lidi nepřečtou, tak jak to bylo dosud, tak jestli si někdo myslí, že si to nyní budou číst, tak se hodně plete. Zákonná norma se změnou zákoníku zase tak moc obsahově nezměnila, ono posílání podmínek je výmysl, který vypotili samozvanci z organizace APEK. Problém je, že tahle samozvaná skupina zmxxů, která zastupuje jen nepatrné procento eshopářů (členů APEK je dle údajů z jejich webu 307, eshopů v ČR odhadem více než 35000) tvrdí, že to tak má být a lidi si to přečtou a myslí, že co APEK napíše je zákon. A to je to největší svinstvo. 1 Link to comment Share on other sites More sharing options...
birkofcz Posted April 6, 2014 Share Posted April 6, 2014 Testuji nastavení na PS 1.5.6.2.Kód: /* Send mail */ $message->attach(new Swift_Message_Attachment(file_get_contents("op.pdf"), "podminky.pdf", "application/pdf")); $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); return $send; } catch (Swift_Exception $e) { return false; } } odebral jsem podmínku na if ($template == 'cs/order_conf') což by mělo zajistit odeslání přílohy vždy. Email chodí bez problémů jen jaksi bez příloh :-( Opravdu to někomu funguje?Dá se uvést příklad správná cesty pro vybrání souboru do přílohy? Link to comment Share on other sites More sharing options...
Česká Faktura Posted April 7, 2014 Share Posted April 7, 2014 (edited) v souboru classes/Mail.php najděte tuto část kódu : if ($file_attachment && !empty($file_attachment)) { // Multiple attachments? if (!is_array(current($file_attachment))) $file_attachment = array($file_attachment); foreach ($file_attachment as $attachment) if (isset($attachment['content']) && isset($attachment['name']) && isset($attachment['mime'])) $message->attach(new Swift_Message_Attachment($attachment['content'], $attachment['name'], $attachment['mime'])); } potom před řádek s if ($file_attachment && !empty($file_attachment)) dejte následujíci kod : $message->attach(new Swift_Message_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/obchodni-podminky.pdf'), 'obchodni-podminky.pdf', 'application/pdf')); do kořenového adresáře nahrajte vlastní soubor obchodni-podminky.pdf nyní budete mít obchodní podmínky v příloze každého emailu, který zákaznikovi přijde. Mělo by to fungovat na všech verzích Prestashopu 1.5, ale jistý si jsem jen od verze 1.5.2 u starších myslím nebyla podpora více souborů v příloze. samořejmě po odzkoušení doporučuji vše dát do override a před začátkem úprav zálohovat soubor classes/Mail.php Edited April 7, 2014 by Ventos312 (see edit history) Link to comment Share on other sites More sharing options...
birkofcz Posted April 9, 2014 Share Posted April 9, 2014 Viděl jsem, nastavil jsem, otestoval jsem a stejně nic a nic nepřijde(tedy ta příloha) Link to comment Share on other sites More sharing options...
djmila Posted April 9, 2014 Share Posted April 9, 2014 Nic proti ale to s uplne kazdym emailem co prijde zakaznikovi budete posilat i vase Obch. podminky ? Dost silene nemyslite ? Link to comment Share on other sites More sharing options...
Česká Faktura Posted April 10, 2014 Share Posted April 10, 2014 Viděl jsem, nastavil jsem, otestoval jsem a stejně nic a nic nepřijde(tedy ta příloha) Bylo by dobre vedet jakou verzi Prestashopu pouzivate. Kazdopadne ujistete se,ze trida Mail.php neni jiz prepsana v override nebo pokud jste upravu delal rovnou pres override tak jste vymazal soubor cache/class_index.php. Pokud mi poslete pristup mohu se podivat kde je problem. Link to comment Share on other sites More sharing options...
Česká Faktura Posted April 10, 2014 Share Posted April 10, 2014 Nic proti ale to s uplne kazdym emailem co prijde zakaznikovi budete posilat i vase Obch. podminky ? Dost silene nemyslite ? Neni problem nastavit podminku jen pro urcity email je to jen priklad pouziti... Link to comment Share on other sites More sharing options...
birkofcz Posted April 11, 2014 Share Posted April 11, 2014 Tak vyřešeno.Bylo to nakonec tím override kde byl také umístěn mail.phpDíky moc Link to comment Share on other sites More sharing options...
PankyShop Posted April 23, 2014 Share Posted April 23, 2014 Obchodní podmínky nebo jakoukoliv jinou přílohu lze jednoduše přidat pomocí modulu Příloha k objednávce (Prestashop 1.5.x, 1.6) Link to comment Share on other sites More sharing options...
mello Posted April 23, 2014 Share Posted April 23, 2014 Nakonec mi funguje na 1.5.3.1 návod z prvního postu. Bylo ale potřeba stejný kód vložit do override. Takže příloha se vloží jen do potvrzení. Více příloh jsem zatím nezkoušel. Měl jsem ještě chybu v tom, že příloha se sice vložila, ale pdf bylo poškozené a nečitelné. Chyba byla v podtržítku v názvu přílohy. Ještě jsem musel vymazat application/pdf. Je důležité tomu říct, že jde o pdf? OS to snad pozná sám podle koncovky ne? Link to comment Share on other sites More sharing options...
domorodecmezilidmi Posted June 28, 2014 Share Posted June 28, 2014 Třeba to někomu pomůže. Problém obchodních podmínek jako přílohy emailu jsem řešil již na konci roku, aby od 1.1.2014 bylo vše připraveno. Vycházel jsem z toho, že nejideálnější je přiložit je do emailu potvrzujícího objednávku. Jako jejich přílohu jsem přidal na konec pro jistotu i vzorový formulář pro odstoupení od smlouvy do 14 dnů. Celý dokument jsem vyhotovil v PDF a nahrál do kořenového adresáře obchodu. Odkaz na tento soubor ke stažení jsem přidal i na konec znení OP které jsou zveřejněny na stránkách obchodu. Po tomto nahrání jsem šel do souboru ..classes/Mail.php a vyhledal řádek 304 /* Send mail */ $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); a před něj jsem vložil následující: if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("obchodni_podminky.pdf"), "Obchodní podmínky.pdf", "application/pdf")); Pochopitelně pokud je soubor obchodních podmínek jinde než v kořenovém adresáři je nutné uvést cestu k souboru obchodni_podminky.pdf. Platí pro v. 1.5.x --- Pár dní jsem tu nebyl, tak doplňuji, že 100% vyzkoušené to mám na 1.5.6.2 Je skutečně možné, že v jiných verzích to nefunguje. Díky moc - funguje to skvěle a je to zdarma :-) 1 Link to comment Share on other sites More sharing options...
peter_m Posted July 30, 2014 Share Posted July 30, 2014 neviete preco v PS 1.4 maju prilohy velkost 0bajtov ? Link to comment Share on other sites More sharing options...
vanad Posted July 30, 2014 Share Posted July 30, 2014 To není možné, někde musíš mít chybu. Link to comment Share on other sites More sharing options...
peter_m Posted July 31, 2014 Share Posted July 31, 2014 nikede som cital ze moze byt v PS1.4 iba jedna priloha a ja uz tam mam fakturu. Nemoze to by tym ? Link to comment Share on other sites More sharing options...
vanad Posted July 31, 2014 Share Posted July 31, 2014 Návod, co je v tomto vlákně, podle mě funguje pro kteroukoliv verzi Presty a můžeš si át příloh, kolik chceš. Link to comment Share on other sites More sharing options...
menace Posted December 31, 2014 Share Posted December 31, 2014 Zdravím, použil jsem uvedený návod. Podmínky v příloze dostanu, ale soubor má nulovou velikost. Na serveru má 220 Kb. Nevíte, kde by mohla být chyba? Presta 1.6.0.9 Link to comment Share on other sites More sharing options...
martinl Posted January 5, 2015 Share Posted January 5, 2015 Díky za elegantní řešení jednoho z asi tisíce problémů při zprovozňování webu na prestě. Můžu odškrtnout.Jen v tom vloženém kódu jsem u druhého názvu souboru (který se zobrazí v e-mailu) vynechal příponu, protože ta se vloží tou specifikací, že jde o pdf. Jinak tam byla přípona .pdf dvakrát. Problém s nulovou velikostí přílohy a jejím neotevření spočívá v tom, že je ve vloženém kódu špatně specifikován zdrojový soubor, nebo cesta k němu a přílohou se nic neodešle. Já například jsem na začátku cesty měl zpětné lomítko /docs/dokumenty/VOP.pdf a mělo být docs/dokumenty/VOP.pdf Link to comment Share on other sites More sharing options...
DandyK Posted March 19, 2015 Share Posted March 19, 2015 Ahoj, mám 1.6.0.14 a nejede :-( /* Send mail */ if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("ObchodniPodminky.pdf"), "ObchodniPodminky.pdf", "application/pdf")); if ($template == 'cs/order_conf') $message->attach(new Swift_Message_Attachment(file_get_contents("OdstoupeniObjednavky.pdf"), "OdstoupeniObjednavky.pdf", "application/pdf")); $send = $swift->send($message, $to_list, new Swift_Address($from, $from_name)); $swift->disconnect(); Link to comment Share on other sites More sharing options...
DandyK Posted March 19, 2015 Share Posted March 19, 2015 (edited) Divné, jelikoz takhle funguje :-/ /* Send mail */ /*if ($template == 'cs/order_conf')*/ $message->attach(new Swift_Message_Attachment(file_get_contents('ObchodniPodminky.pdf'), 'ObchodniPodminky.pdf', 'application/pdf')); /*if ($template == 'cs/order_conf')*/ $message->attach(new Swift_Message_Attachment(file_get_contents('OdstoupeniObjednavky.pdf'), 'OdstoupeniObjednavky.pdf', 'application/pdf')); $send = $swift->send($message, $to_list, new Swift_Address($from, $from_name)); $swift->disconnect(); Edited March 19, 2015 by DandyK (see edit history) Link to comment Share on other sites More sharing options...
Wyrmberg Posted August 30, 2015 Share Posted August 30, 2015 Když se to zakomentuje tak to kupodivu posila ve všech mailech Link to comment Share on other sites More sharing options...
PresstaModul.shopmk Posted September 9, 2015 Share Posted September 9, 2015 Pročetl jsem si zdejší diskuzi k problematice zasílání příloh k emailům, pokud se Vám nechce hrabat v kodu a ztrácet drahocenný čas řešením neustálých problémů pak mohu doporučit jeden z mých modulů a to [Modul] Přílohy v automaticky odesílaných e-mailech jedná se o komplexní modul, který umožňuje zaslat neomezené množství souborů v několika typech (*.pdf, *.csv, *.txt, *.xls, *.doc), a tyto přiřadit jen k určitým stavům objednávky, nebo do všech dle libosti Modul lze využít i k zasílání reklamy nebo nabídkových listů, ceníků atp.... 1 Link to comment Share on other sites More sharing options...
JiVi Posted October 3, 2015 Share Posted October 3, 2015 if ($template == 'order_conf'){ $message->attach(new Swift_Message_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/obchodni_podminky.pdf'), 'obchodni_podminky.pdf', 'application/pdf')); $message->attach(new Swift_Message_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/podminky_vraceni_penez.pdf'), 'podminky_vraceni_penez.pdf', 'application/pdf')); } pro 1.6 Link to comment Share on other sites More sharing options...
Evelina1 Posted May 18, 2016 Share Posted May 18, 2016 (edited) if ($template == 'order_conf'){ $message->attach(new Swift_Message_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/obchodni_podminky.pdf'), 'obchodni_podminky.pdf', 'application/pdf')); $message->attach(new Swift_Message_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/podminky_vraceni_penez.pdf'), 'podminky_vraceni_penez.pdf', 'application/pdf')); } pro 1.6 Dobrý den, tato úprava mi fungovala na verzi 1.6.1.2, bohužel po upgradu na 1.6.1.5 to nefunguje, po odeslání objednávky to skončí jen bílou stránkou. Je třeba na nejnovější verzi něakých změn v úpravě? doplňuji: v debug modu to vypisuje chybu Fatal error: Class 'Swift_Message_Attachment' not found in /classes/Mail.php on line 361 kdy na tom řádku 361 je $message->attach(new Swift_Message_Attachment(file_get_contents('ObchodniPodminky.pdf'), 'ObchodniPodminky.pdf', 'application/pdf')); Edited May 18, 2016 by Evelina1 (see edit history) Link to comment Share on other sites More sharing options...
jkovac Posted July 11, 2016 Share Posted July 11, 2016 (edited) Dobrý den, tato úprava mi fungovala na verzi 1.6.1.2, bohužel po upgradu na 1.6.1.5 to nefunguje, po odeslání objednávky to skončí jen bílou stránkou. Je třeba na nejnovější verzi něakých změn v úpravě? doplňuji: v debug modu to vypisuje chybu Fatal error: Class 'Swift_Message_Attachment' not found in /classes/Mail.php on line 361 kdy na tom řádku 361 je $message->attach(new Swift_Message_Attachment(file_get_contents('ObchodniPodminky.pdf'), 'ObchodniPodminky.pdf', 'application/pdf')); Dobrý den, vyřešil/la jste to prosím Vás? Mám stejný problém. Edited July 11, 2016 by jkovac (see edit history) Link to comment Share on other sites More sharing options...
Evelina1 Posted July 11, 2016 Share Posted July 11, 2016 Dobrý den, bohužel nevyřešila. Dostala jsem radu zkopírovat z instalačního balíčku celý obsah složky tools/swift, ale to také nepomohlo. Link to comment Share on other sites More sharing options...
jkovac Posted July 11, 2016 Share Posted July 11, 2016 Dobrý den, bohužel nevyřešila. Dostala jsem radu zkopírovat z instalačního balíčku celý obsah složky tools/swift, ale to také nepomohlo. Tak už jsem na to asi přišel. Ve verzi 1.6.1.5 přejmenovali funkci Swift_Message_Attachment na Swift_Attachment. Stačí změnit v původním funkčním kódu a mělo by to jít. Link to comment Share on other sites More sharing options...
Evelina1 Posted July 11, 2016 Share Posted July 11, 2016 Skvělá zpráva, teď jsem na to narazila na polském foru, vyzkouším, snad to bude funkčí. Mockrát děkuji. Link to comment Share on other sites More sharing options...
domorodecmezilidmi Posted July 26, 2016 Share Posted July 26, 2016 Ahoj, bohužel řeším taky a bez úspěchu. V staré PS to fungovalo a i když vymažu Message_ tak to prostě nejde. Link to comment Share on other sites More sharing options...
domorodecmezilidmi Posted July 26, 2016 Share Posted July 26, 2016 Tak nyní se soubory odešlou, ale mají nulovou hodnotu. To už bude jen chyba v umístění, nebo nějaká blbost. Mám to takto: if ($template == 'order_conf'){ $message->attach(new Swift_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/Obchodní_podmínky.pdf'), 'Obchodní_podmínky', 'application/pdf')); $message->attach(new Swift_Attachment(file_get_contents('._PS_ROOT_DIR_ '.'/Formulár_odstoupení_od_smlouvy.pdf'), 'Formulár_odstoupení_od_smlouvy', 'application/pdf')); } Link to comment Share on other sites More sharing options...
domorodecmezilidmi Posted July 26, 2016 Share Posted July 26, 2016 VYŘEŠENO pro ostatní : použijte tento kód: if ($template == 'order_conf'){ $message->attach(new Swift_Attachment(file_get_contents('Obchodní_podmínky.pdf'), 'Obchodní podmínky', 'application/pdf')); $message->attach(new Swift_Attachment(file_get_contents('Formulár_odstoupení_od_smlouvy.pdf'), 'Odstoupení_od_smlouvy', 'application/pdf')); } Link to comment Share on other sites More sharing options...
jirka_malvin Posted September 18, 2016 Share Posted September 18, 2016 (edited) VYŘEŠENO pro ostatní : použijte tento kód: if ($template == 'order_conf'){ $message->attach(new Swift_Attachment(file_get_contents('Obchodní_podmínky.pdf'), 'Obchodní podmínky', 'application/pdf')); $message->attach(new Swift_Attachment(file_get_contents('Formulár_odstoupení_od_smlouvy.pdf'), 'Odstoupení_od_smlouvy', 'application/pdf')); } , zdravím, dotaz - kam jste umístil soubor? protože dostávám taky nulový soubor. Případně jak jste to vyřešil? UPDATE pro ostatní: vyřešil jsem to cestou... s lomitkem - "podminky" je adresar, kde je soubor uložen. (platí pro 1.6.1.6) if ($template == 'order_conf'){ $message->attach(new Swift_Attachment(file_get_contents('../podminky/soubor.pdf'), 'soubor.pdf', 'application/pdf')); } Jirka Edited September 18, 2016 by jirka_malvin (see edit history) Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 5, 2016 Share Posted October 5, 2016 Pokud byste to nechtěli řešit svépomocí a ztrácet tím čas, využijte můj modul https://psmoduly.cz/obchodni-podminky-jako-priloha-do-e-mailu-potvrzeni-objednavky-38/prestashop-1-6-1-5.htm Kompatibilní pro všechny verze PS s tím, že i pro nový typ odesílání v novějších PS. (otestováno i na 1.6.1.7) Opravdu se to dalo vyřešit během pár minut i bez modulu. Link to comment Share on other sites More sharing options...
Evelina1 Posted October 5, 2016 Share Posted October 5, 2016 Ano, o tom nepochybuji, ale jsou lidé, kteří s FTP pracovat neumí a pro ty je právě tento modul (a řekl bych, že takových lidí je celkem dost) Kdo neumí s FTP tak si koupí modul a .......... Stačí na FTP do kořenové složky umístit soubor reklamacni_rad.pdf a/nebo obchodni_podminky.pdf a/nebo odstoupeni_od_smlouvy.pdf. Tyto soubory se poté automaticky připojí do potvrzovacího e-mailu. Je nutno zachovat přesně tyto názvy souborů. Každého věc jak si to zařídí, ale tohle pobavilo Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 5, 2016 Share Posted October 5, 2016 Já toto provádím klientům v rámci ceny. Víte? (nutno podotknout, že z mojí zkušenosti klienti "vyššího levelu" zvládnou nahrát soubory na ftp, ale nechtějí zase editovat něco v kódu, aby něco nerozbili) Věřte mi, že kdyby se modul neprodával a nebyla po něm poptávka, nedělal bych ho. To platí o všech mých modulech... no a já dokážu zadarmo komukoliv poradit jak to udělat bez modulu ... o tom je toto forum. Sem by reklamy neměly patřit ... Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 5, 2016 Share Posted October 5, 2016 Já to chápu, ale jak říkám, někdo si na to netroufne. Pokud Vás to pohoršuje, tak se omlouvám, nicméně, vidím statistiky prodeje a vidím, že zákazníci o tyto moduly prostě zájem mají... Proto si myslím, že jim to vyhovuje víc, než se hrabat v kódu (soudím i dle reakcí, co mi říkají klienti, když mi třeba telefonují). Většina klientů, pokud mají platbu kartou, podepisuje, že zajistí plnou bezpečnost přístupu na server. Upozornil jste je někdy, že přístup přes FTP je nebezpečný? Oni Vám dali přítup a tím porušili podmínky smlouvy? Dominiku, a já vidím, že na eshopu nemáte např. reklamační řád a ani jsem se nikde nedočetl, jaké že je Vaše registrační číslo u UOOU. To by také mohlo zajímat Vaše zákazníky (a nejen je). ... já myslím, že bychom tuto diskuzi mohli ukončit, co? Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 5, 2016 Share Posted October 5, 2016 Všichni, kteří Prestashop i jiné systémy dělají, tak vědí, že všechny práce se dělají přes FTP a každý klient samozřejmě dává přístupy na FTP. O tomlhe debatovat je naprosto mimo, spíše to uvádíte jen abyste si přihřál polívčičku. (popravdě netuším proč, jen jsem tu seriozne hodil neco, co jini klienti radi vyuzivaji). Tak, ci tak, nejenom v pripade modulu, ale i beznych praci je samozrejme soucasti pristup na ftp, ale tak to má uplne kazdy realizator, at uz tvurce modulu, ci programator shopu, ci firma. Toto je vsude stejne, nechapu moc ten komentar v tomto smeru. Moje klienty nezajímá reklamační řád, vše je uvedeno v obchodních podmínkách (https://psmoduly.cz/content/3-obchodni-podminky), nicméně, moje moduly fungují dobře a když nefungují, řeším to s klienty k jejich spokojenosti. Pokud je nějaký problém, který brání vyřešení, vracím peníze (stalo se to asi jen 2x zatím). Tím chci říci, že moji klienti nemají problémy s mými moduly, ani s mojí prací na Prestě. Však já žádnou diskuzi nechtěl začínat, respektive, držel jsem se tématu, Vy jste začal řešit nějaké věci, které s tím vůbec nesouvisí, typu reklamacni rad, UOOU, nebezpecny FTP pristup atd. Já do těchto vod vůbec nešlápnul, já se držím tématu obchodní podmínky a jejich řešení. Nic víc. Nechápu tento nepřátelský postoj Každopádně, opravdu nemám důvod se tu hádat o tom, jestli je správné dát FTP přístup, či nikoliv apod. (Každý, kdo je programátor, tak o tom ví své). Přijde mi to trošku zvláštní... Mám spoustu klientů a každý uděluje FTP přístup, jak mě, tak třeba i zahraničním vývojařům a nikdy s tím nebyl žádný problém. To máte jako pravidlo, že ve městě je povolená rychlost většinou 50 kilometrů za hodinu, taky je to pravidlo, které se nedodržuje. Co víc k tomu napsat? Mě zase štve, že dáváte do diskuze reklamu.To si dělejte jinde. Prostě to sem nepatří a basta. Mimochodem - reklamační řád sice nezajímá zákazníky, ale obchodní inspekci a UOOU. To byste zase měl vědět vy. A proč ten útočný tón? Děláte do eshopů a nemáte základní znalosti o tomto tématu. Mě štvou diletanti. Zůstaňte u kódování anebo eshopy dělejte pořádně, tak jak se má. Pokud Váš eshop nevyhovuje legislativě, tak nedávejte reklamu kam nepatří, protože se Vám to může vrátit jako bumerang. A pokud to neumíte, najměte si na to ty, co to umí. A do IT dělám už 30 let. Okolo eshopů se motám 15 let. Správný programátor přístup FTP ani na serveru nezřídí A když už tam je, tak ho nedá nikomu jinému (na to je přece SFTP, SSH apod.). A správně udělaný modul nepotřebuje přístup FTP - na to je přeci admin rozhraní v Prestashopu, kde nahrajete zip soubor. Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 5, 2016 Share Posted October 5, 2016 Pane, nehodlám se hádat, takže se již zdržím reakce, a to i přesto, že bych měl nějaké výhrady k tomu, co píšete. Ale nechci už tu spamovat diskuzi, takže pro dobro diskuze již tedy ode mě bez reakce, ať tu není flame z jedné strany na druhé. EDIT: Ale jo, prostě musím reagovat - Bodově jen stručně: (nic ve zlém, pouze na upřesnění) Jsem programátor/kóder - pro klienty dělám moduly a shopy, neřeším pro klienty obsah, marketing, právo a nic faůšé, to si řeší klienti sami. Dělám "pouze" kódování a programování, nic víc, nic míň. FTP - tak v tom případě jsem potkal zatím samé špatné programátory/majitele shopu. Co tak vím, tak z mých klientů ná SFTP/SSH tak 1%. Ostatních 99% má pouze FTP, protože na normálním hostingu to tak prostě je (a to je prostě fakt).Modul FTP vs admin - modul by samozřejmě šel upravit, aby nebyl potřeba FTP přístup a aby to šlo nahrát z adminu, to je jasné, uznávám, ale zatím jsem neměl čas to předělávat, mám něco přes stovku modulů. Tato úprava je to na to todo listu. Btw, i přes adminsitraci se dá dostat na ftp... (takže nedávat FTP, ale dát admin je prakticky stejný "zločin"). Když uděláte dobře modul, nemusí Vám klient dát admin přístup a modul si může nahrát sám. Nechci abyste hlídal klientům marketing, nebo obsah - ale říkám Vám, že to máte VY ve svém eshopu špatně - opravte si to a zaregistrujte se na UOOU (je to zdarma). Opravdu nezveřejňujte, že máte přístup k jiným eshopům se špatným zabezpečením nebo k adminu, protože to může zajímat úřady, které si můžou vyžádat podrobnosti - tj. jestli jsou dodržovány pravidla UOOU. Moduly kódovat umíte - a pokud je chcete prodávat přes eshop, natudujte si problematiku. Zákony platí i pro Vás i pro Váš eshop. Pokud to neumíte, nebo nemáte čas, najměte si někoho, kdo dané problematice rozumí - stejně tak si najímají klienti Vás. Pokud to neuděláte, tak nedávejte reklamu tam, kam nepatří - protože pak se někdo zaměří na Váš eshop (práve proto že ho štvou nevyžádané reklamy) zda tam máte vše potřebné a zda dodržujete legislativu. Na reklamu si využijte jiné nástroje a nespamujte ve forech, která k tomu nejsou určená. O tom byla celá tato diskuze. J. Link to comment Share on other sites More sharing options...
N3S4 Posted October 9, 2016 Share Posted October 9, 2016 (edited) Funkční řešení poslání přílohy v potvrzení objednávky (Obchodní podmínky a Poučení o odstoupení) na Prestashop 1.6.1.15: v souboru /classes/Mail.php najít řádek: /* Send mail */ a před něj vložit: if ($template == 'order_conf'){ $file = _PS_ROOT_DIR_ . '/obchodni-podminky.pdf'; $message->attach(new Swift_Attachment(file_get_contents($file), 'obchodni-podminky.pdf', 'application/pdf')); } if ($template == 'order_conf'){ $file = _PS_ROOT_DIR_ . '/pouceni-odstoupeni-od-smlouvy.pdf'; $message->attach(new Swift_Attachment(file_get_contents($file), 'pouceni-odstoupeni-od-smlouvy.pdf', 'application/pdf')); } Oba soubory musí být v root adresáři. Název souborů bez mezer a interpunkcí. Funguje, odzkoušeno. Edited September 15, 2017 by N3S4 (see edit history) Link to comment Share on other sites More sharing options...
jirka_malvin Posted October 9, 2016 Share Posted October 9, 2016 Funkční řešení poslání přílohy v potvrzení objednávky (Obchodní podmínky a Poučení o odstoupení) na Prestashop 1.6.1.7: v souboru /classes/Mail.php najít řádek: /* Send mail */ a před něj vložit: if ($template == 'order_conf'){ $file = _PS_ROOT_DIR_ . '/obchodni-podminky.pdf'; $message->attach(new Swift_Attachment(file_get_contents($file), 'obchodni-podminky.pdf', 'application/pdf')); } if ($template == 'order_conf'){ $file = _PS_ROOT_DIR_ . '/pouceni-odstoupeni-od-smlouvy.pdf'; $message->attach(new Swift_Attachment(file_get_contents($file), 'pouceni-odstoupeni-od-smlouvy.pdf', 'application/pdf')); } Oba soubory musí být v root adresáři. Název souborů bez mezer a interpunkcí. Funguje, odzkoušeno. Ahoj, už jsem tady psal, že to funguje. Jinak to nemusí bezpodmínečně být přímo v hlavním/root adresáři, může se udělat jakýkoliv (aby nebyl nepořádek v souborech), ale pak musí být odkaz na ten adresář. ./adresar/soubor.pdf Jirka Link to comment Share on other sites More sharing options...
switch42 Posted January 17, 2017 Share Posted January 17, 2017 Neřešil už někdo, vložení do verze 1.6.1.10, prosím? Link to comment Share on other sites More sharing options...
jirka_malvin Posted January 17, 2017 Share Posted January 17, 2017 Na 1.6.1.10 by měl platit stejný postup jako na 1.6.1.6 - viz výše ... Aby vše fungovalo správně, je potřeba nastavit správně práva ke složce, kde jsou umístěné soubory. Link to comment Share on other sites More sharing options...
switch42 Posted January 17, 2017 Share Posted January 17, 2017 Když to zkouším na 1.6.1.10 hází mi to následující chyby: Notice: Undefined variable: currency in /home/www/doprovazejme.cz/subdomeny/www/www/modules/bankwire/controllers/front/validation.php on line 64Notice: Trying to get property of non-object in /home/www/doprovazejme.cz/subdomeny/www/www/modules/bankwire/controllers/front/validation.php on line 64Parse error: syntax error, unexpected 'catch' (T_CATCH) in /home/www/doprovazejme.cz/subdomeny/www/www/classes/Mail.php on line 396 V modulu bankwire jsem upravovala jen soubor *.tpl pro smazani textu týkající se měny a pak odstranění majitele účtu. V mail.php kromě kódu z tohoto vlákna není upravováno nic. Můžete mi, prosím, poradit? Děkuji. Link to comment Share on other sites More sharing options...
switch42 Posted January 17, 2017 Share Posted January 17, 2017 (edited) Tak currency odstraněno, nyní už je jen chyba: Parse error: syntax error, unexpected 'catch' (T_CATCH) in /home/www/doprovazejme.cz/subdomeny/www/www/classes/Mail.php on line 396 return $send; } catch (Swift_SwiftException $e) { PrestaShopLogger::addLog( 'Swift Error: '.$e->getMessage(), 3, null, 'Swift_Message' ); return false; } Edited January 17, 2017 by switch42 (see edit history) Link to comment Share on other sites More sharing options...
switch42 Posted January 17, 2017 Share Posted January 17, 2017 (edited) Vyřešeno - chyběla mi na konci závorka } Moc děkuji, maily chodí správně! Edited January 17, 2017 by switch42 (see edit history) 1 Link to comment Share on other sites More sharing options...
JiVi Posted June 11, 2020 Share Posted June 11, 2020 pro Prestu 1.7 jsem to resil tady Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now