Montaditos Sevilla Posted October 13, 2013 Share Posted October 13, 2013 estoy configurando una nueva tienda 1.5.6, todo va bien pero me he encontrado con que no consigo responder a los mensajes de los pedidos de los clientes ni tampoco recibir notificaciones de pedidos por email, pero al cliente si le llegan automáticamente las dos de pedido recibido y preparación en curso, agradecería ayuda para no descartar el trabajo ya realizado. este es el enlace de mi nuevo proyecto. http://montaditosevilla.com/index.php Link to comment Share on other sites More sharing options...
Vgs Posted October 17, 2013 Share Posted October 17, 2013 Cubicuba a mi me sucede lo mismo, no he logrado resolverlo. 1 Link to comment Share on other sites More sharing options...
Montaditos Sevilla Posted October 17, 2013 Author Share Posted October 17, 2013 (edited) He probado a descargarlo de nuevo y nada, no hay manera de resolver esta cuestión, a ver si encontramos a alguien que nos pueda ayudar, no estoy muy puesto en el foro, quizá no sea esta la mejor forma de contactar con la gente de este sitio, habrá que buscar otro tema relacionado o algo..... http://montaditosevilla.com/index.php Edited October 17, 2013 by cubicuba (see edit history) Link to comment Share on other sites More sharing options...
Envelo Posted October 17, 2013 Share Posted October 17, 2013 Hola, en el apartado del admin, "parámetros avanzados/email" lo teneis bien configurado, tambien revisar dentro de "Clientes/contacto" y "Clientes/Servicio al cliente" Saludos 1 Link to comment Share on other sites More sharing options...
Montaditos Sevilla Posted October 18, 2013 Author Share Posted October 18, 2013 No es la primera tienda que configuro, nunca he tenido este problema, como he comentado anteriormente, al cliente si le llegan las notificaciones pero yo no puedo emitir email desde la tienda, ni recibirlos cuando me hacen un pedido, lo he repasado todo mil veces y probablemente tenga la solución delante de las narices pero no consigo verla, te agradezco la ayuda, pero no doy con la tecla... Link to comment Share on other sites More sharing options...
Paula Martinez Posted October 18, 2013 Share Posted October 18, 2013 (edited) Hola, Me llamo Raul Martinez, Yo tambien tengo Prestashop 1.5.6 Yo tenia un problema parecido, tenia el modulo de alertas por correo activado, lo habia desinstalado y vuelto a instalar y aunque los clientes recibian el email de notificacion yo no lo recibia. Entonces buscando en el foro problema relaccionados con Prestashop 1.5.6,en un post del foro el usuario 'Nadie' posteo este enlace: https://github.com/PrestaShop/PrestaShop/commit/789911184b72a2765a6faf39652506057350a021 probe los cambios de ese enlace, al parecer cuando dice - quiere decir quitar linea y cuando dice + añadir linea, lo probe y de pronto empece a recibir las notifaciones por arte de magia. Edited October 18, 2013 by Raul Martinez (see edit history) 2 Link to comment Share on other sites More sharing options...
Montaditos Sevilla Posted October 20, 2013 Author Share Posted October 20, 2013 Hola, Me llamo Raul Martinez, Yo tambien tengo Prestashop 1.5.6 Yo tenia un problema parecido, tenia el modulo de alertas por correo activado, lo habia desinstalado y vuelto a instalar y aunque los clientes recibian el email de notificacion yo no lo recibia. Entonces buscando en el foro problema relaccionados con Prestashop 1.5.6,en un post del foro el usuario 'Nadie' posteo este enlace: https://github.com/PrestaShop/PrestaShop/commit/789911184b72a2765a6faf39652506057350a021 probe los cambios de ese enlace, al parecer cuando dice - quiere decir quitar linea y cuando dice + añadir linea, lo probe y de pronto empece a recibir las notifaciones por arte de magia. Ok muchas gracias, voy a probar, ya te cuento. Saludos Link to comment Share on other sites More sharing options...
Montaditos Sevilla Posted October 21, 2013 Author Share Posted October 21, 2013 (edited) Ok muchas gracias, voy a probar, ya te cuento. Ok muchas gracias, voy a probar, ya te cuento. Saludos nada, no hay manera, ni haciendo los cambios que me indicas ni sustituyendo el archivo por uno nuevo Edited October 21, 2013 by Montaditos Sevilla (see edit history) Link to comment Share on other sites More sharing options...
spynlux Posted October 22, 2013 Share Posted October 22, 2013 Yo también he hecho lo que indica el post https://github.com/PrestaShop/PrestaShop/commit/789911184b72a2765a6faf39652506057350a021 y sigue sin funcionar... mi hosting es godaddy aunque en otro prestashop que tenia instalado, se enviaban bien... :S alguien sabe algo? Link to comment Share on other sites More sharing options...
Dimar Posted October 27, 2013 Share Posted October 27, 2013 Hola, saludos. Les comento que por medio de ese enlace yo si pude solucionar el problema de no recibir los pedidos de los clientes por email. Estoy trabajando bajo un clon de mi tienda a la cual le hice la actualizacion de 1.4.1 a 1.5.6 y la ando testeando antes de mudar de version y entre otros errores (que e podido solventar) uno de ellos es el que ustedes presentan. Tambien me llega un correo en los registros de errores: Parametros avanzados --> Log me dice: The parameter id_lang in function displayDate (Line 275) is deprecated and will be removed in the next major version. El parámetro id_lang en DisplayDate función (línea 275) es obsoleto y se eliminará en la próxima versión. Desconozco ese error, aunque pareciera que el team de PS esta al tanto de ello, nose. Saludos!! Link to comment Share on other sites More sharing options...
spynlux Posted October 27, 2013 Share Posted October 27, 2013 Haciando los cambios en el archivo del enlace de arriba, y configurando el correo por STMP a mi me funciona.. Link to comment Share on other sites More sharing options...
areadigital Posted November 5, 2013 Share Posted November 5, 2013 (edited) yo tuve este mismo problema y con las instruciones de Nadie, lo puede solucionar. os copio el texto integro del archivo. classes/mail.php. /* borrais todo y pegais esto. */ <?php /* * 2007-2013 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-2013 PrestaShop SA * @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 * @param string $bcc Bcc recipient */ 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, $bcc = null) { $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_TYPE' ), null, null, $id_shop); // Returns immediatly if emails are deactivated if ($configuration['PS_MAIL_METHOD'] == 3) return true; $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.'/'; } 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 */ $to_list = new Swift_RecipientList(); if (is_array($to) && isset($to)) { foreach ($to as $key => $addr) { $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) $to_name = ''; else { if (function_exists('mb_encode_mimeheader')) $to_name = mb_encode_mimeheader($to_name, 'utf-8'); else $to_name = self::mimeEncode($to_name); } $to_list->addTo($addr, $to_name); } $to_plugin = $to[0]; } else { /* Simple recipient, one address */ $to_plugin = $to; if ($to_name == null || $to_name == $to) $to_name = ''; else { if (function_exists('mb_encode_mimeheader')) $to_name = mb_encode_mimeheader($to_name, 'utf-8'); else $to_name = self::mimeEncode($to_name); } $to_list->addTo($to, $to_name); } if(isset($bcc)) { $to_list->addBcc($bcc); } $to = $to_list; 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', null, null, $id_shop)); /* 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/#', str_replace(DIRECTORY_SEPARATOR, '/', $template_path)) && preg_match('#modules/([a-z0-9_-]+)/#ui', str_replace(DIRECTORY_SEPARATOR, '/',$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/'; elseif (file_exists($theme_path.'mails/'.$template.'.txt') || file_exists($theme_path.'mails/'.$template.'.html')) { $template_path = $theme_path.'mails/'; $override_mail = true; } if (!file_exists($template_path.$template.'.txt') && ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_TEXT)) { Tools::dieOrLog(Tools::displayError('Error - The following e-mail template is missing:').' '.$template_path.$template.'.txt', $die); return false; } else if (!file_exists($template_path.$template.'.html') && ($configuration['PS_MAIL_TYPE'] == Mail::TYPE_BOTH || $configuration['PS_MAIL_TYPE'] == Mail::TYPE_HTML)) { Tools::dieOrLog(Tools::displayError('Error - The following e-mail template is missing:').' '.$template_path.$template.'.html', $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($theme_path.'mails/'.$iso.'/lang.php')) include_once($theme_path.'mails/'.$iso.'/lang.php'); else include_once(_PS_MAIL_DIR_.$iso.'/lang.php'); /* Create mail and attach differents parts */ $message = new Swift_Message('['.Configuration::get('PS_SHOP_NAME', null, null, $id_shop).'] '.$subject); $message->setCharset('utf-8'); /* Set Message-ID - getmypid() is blocked on some hosting */ $message->setId(Mail::generateId()); $message->headers->setEncoding('Q'); if (Configuration::get('PS_LOGO_MAIL') !== false && file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL', null, null, $id_shop))) $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO_MAIL', null, null, $id_shop); else { if (file_exists(_PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, $id_shop))) $logo = _PS_IMG_DIR_.Configuration::get('PS_LOGO', null, null, $id_shop); else $template_vars['{shop_logo}'] = ''; } ShopUrl::cacheMainDomainForShop((int)$id_shop); /* don't attach the logo as */ if (isset($logo)) $template_vars['{shop_logo}'] = $message->attach(new Swift_Message_EmbeddedFile(new Swift_File($logo), null, ImageManager::getMimeTypeByExtension($logo))); if ((Context::getContext()->link instanceof Link) === false) Context::getContext()->link = new Link(); $template_vars['{shop_name}'] = Tools::safeOutput(Configuration::get('PS_SHOP_NAME', null, null, $id_shop)); $template_vars['{shop_url}'] = Context::getContext()->link->getPageLink('index', true, Context::getContext()->language->id); $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); $template_vars['{color}'] = Tools::safeOutput(Configuration::get('PS_MAIL_COLOR', null, null, $id_shop)); $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 */ $send = $swift->send($message, $to, new Swift_Address($from, $from_name)); $swift->disconnect(); ShopUrl::resetMainDomainCache(); 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)); } /* Rewrite of Swift_Message::generateId() without getmypid() */ protected static function generateId($idstring = null) { $midparams = array( "utctime" => gmstrftime("%Y%m%d%H%M%S"), "randint" => mt_rand(), "customstr" => (preg_match("/^(?<!\\.)[a-z0-9\\.]+(?!\\.)\$/iD", $idstring) ? $idstring : "swift") , "hostname" => (isset($_SERVER["SERVER_NAME"]) ? $_SERVER["SERVER_NAME"] : php_uname("n")), ); return vsprintf("<%s.%d.%s@%s>", $midparams); } public static function isMultibyte($data) { $length = strlen($data); for ($i = 0; $i < $length; $i++) { $result = ord(($data[$i])); if ($result > 128) { return true; } } return false; } public static function mimeEncode($string, $charset = 'UTF-8', $newline = "\r\n") { if (!self::isMultibyte($string) && strlen($string) < 75) { return $string; } $charset = strtoupper($charset); $start = '=?' . $charset . '?B?'; $end = '?='; $sep = $end . $newline . ' ' . $start; $length = 75 - strlen($start) - strlen($end); $length = $length - ($length % 4); if ($charset === 'UTF-8') { $parts = array(); $maxchars = floor(($length * 3) / 4); $stringLength = strlen($string); while ($stringLength > $maxchars) { $i = (int)$maxchars; $result = ord($string[$i]); while ($result >= 128 && $result <= 191) { $i--; $result = ord($string[$i]); } $parts[] = base64_encode(substr($string, 0, $i)); $string = substr($string, $i); $stringLength = strlen($string); } $parts[] = base64_encode($string); $string = implode($sep, $parts); } else { $string = chunk_split(base64_encode($string), $length, $sep); $string = preg_replace('/' . preg_quote($sep) . '$/', '', $string); } return $start . $string . $end; } } /* repito todo el texto del archivo /clases/mail.php para mayor seguridad renombras el archivo ejemplo : mail.php a mail_old.php, creas uno nuevo y pegas todo el texto renombrandolo como mail.php*/ Edited November 5, 2013 by areadigital (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts