Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

staric

Newbie
  
  • Posts

    13
  • Joined

  • Last visited

staric's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Collaborator
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

2

Reputation

  1. ~/www/блаблабла.ru/system/library/mail.php <?php // * @copyright OPENCART.PRO 2011 - 2015. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class Mail { protected $to; protected $from; protected $sender; protected $reply_to; protected $subject; protected $text; protected $html; protected $attachments = array(); public $protocol = 'mail'; public $smtp_hostname; public $smtp_username; public $smtp_password; public $smtp_port = 25; public $smtp_timeout = 5; public $newline = "\n"; public $verp = false; public $parameter = ''; public function __construct($config = array()) { foreach ($config as $key => $value) { $this->$key = $value; } } public function setTo($to) { $this->to = $to; } public function setFrom($from) { $this->from = $from; } public function setSender($sender) { $this->sender = $sender; } public function setReplyTo($reply_to) { $this->reply_to = $reply_to; } public function setSubject($subject) { $this->subject = $subject; } public function setText($text) { $this->text = $text; } public function setHtml($html) { $this->html = $html; } public function addAttachment($filename) { $this->attachments[] = $filename; } public function send() { if (!$this->to) { trigger_error('Error: E-Mail to required!'); exit(); } if (!$this->from) { trigger_error('Error: E-Mail from required!'); exit(); } if (!$this->sender) { trigger_error('Error: E-Mail sender required!'); exit(); } if (!$this->subject) { trigger_error('Error: E-Mail subject required!'); exit(); } if ((!$this->text) && (!$this->html)) { trigger_error('Error: E-Mail message required!'); exit(); } if (is_array($this->to)) { $to = implode(',', $this->to); } else { $to = $this->to; } $boundary = '----=_NextPart_' . md5(time()); $header = 'MIME-Version: 1.0' . $this->newline; if ($this->protocol != 'mail') { $header .= 'To: ' . $to . $this->newline; $header .= 'Subject: =?UTF-8?B?' . base64_encode($this->subject) . '?=' . $this->newline; } $header .= 'Date: ' . date('D, d M Y H:i:s O') . $this->newline; $header .= 'From: =?UTF-8?B?' . base64_encode($this->sender) . '?=' . ' <' . $this->from . '>' . $this->newline; if (!$this->reply_to) { $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->sender) . '?=' . ' <' . $this->from . '>' . $this->newline; } else { $header .= 'Reply-To: =?UTF-8?B?' . base64_encode($this->reply_to) . '?=' . ' <' . $this->reply_to . '>' . $this->newline; } $header .= 'Return-Path: ' . $this->from . $this->newline; $header .= 'X-Mailer: PHP/' . phpversion() . $this->newline; $header .= 'Content-Type: multipart/related; boundary="' . $boundary . '"' . $this->newline . $this->newline; if (!$this->html) { $message = '--' . $boundary . $this->newline; $message .= 'Content-Type: text/plain; charset="utf-8"' . $this->newline; $message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline; $message .= $this->text . $this->newline; } else { $message = '--' . $boundary . $this->newline; $message .= 'Content-Type: multipart/alternative; boundary="' . $boundary . '_alt"' . $this->newline . $this->newline; $message .= '--' . $boundary . '_alt' . $this->newline; $message .= 'Content-Type: text/plain; charset="utf-8"' . $this->newline; $message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline; if ($this->text) { $message .= $this->text . $this->newline; } else { $message .= 'This is a HTML email and your email client software does not support HTML email!' . $this->newline; } $message .= '--' . $boundary . '_alt' . $this->newline; $message .= 'Content-Type: text/html; charset="utf-8"' . $this->newline; $message .= 'Content-Transfer-Encoding: 8bit' . $this->newline . $this->newline; $message .= $this->html . $this->newline; $message .= '--' . $boundary . '_alt--' . $this->newline; } foreach ($this->attachments as $attachment) { if (file_exists($attachment)) { $handle = fopen($attachment, 'r'); $content = fread($handle, filesize($attachment)); fclose($handle); $message .= '--' . $boundary . $this->newline; $message .= 'Content-Type: application/octet-stream; name="' . basename($attachment) . '"' . $this->newline; $message .= 'Content-Transfer-Encoding: base64' . $this->newline; $message .= 'Content-Disposition: attachment; filename="' . basename($attachment) . '"' . $this->newline; $message .= 'Content-ID: <' . basename(urlencode($attachment)) . '>' . $this->newline; $message .= 'X-Attachment-Id: ' . basename(urlencode($attachment)) . $this->newline . $this->newline; $message .= chunk_split(base64_encode($content)); } } $message .= '--' . $boundary . '--' . $this->newline; if ($this->protocol == 'mail') { ini_set('sendmail_from', $this->from); if ($this->parameter) { mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header, $this->parameter); } else { mail($to, '=?UTF-8?B?' . base64_encode($this->subject) . '?=', $message, $header); } } elseif ($this->protocol == 'smtp') { $tls = substr($this->smtp_hostname, 0, 3) == 'tls'; $hostname = $tls ? substr($this->smtp_hostname, 6) : $this->smtp_hostname; $handle = fsockopen($hostname, $this->smtp_port, $errno, $errstr, $this->smtp_timeout); if (!$handle) { trigger_error('Error: ' . $errstr . ' (' . $errno . ')'); exit(); } else { if (substr(PHP_OS, 0, 3) != 'WIN') { socket_set_timeout($handle, $this->smtp_timeout, 0); } while ($line = fgets($handle, 515)) { if (substr($line, 3, 1) == ' ') { break; } } fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 250) { trigger_error('Error: EHLO not accepted from server!'); exit(); } if ($tls) { fputs($handle, 'STARTTLS' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 220) { trigger_error('Error: STARTTLS not accepted from server!'); exit(); } stream_socket_enable_crypto($handle, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); } if (!empty($this->smtp_username) && !empty($this->smtp_password)) { fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 250) { trigger_error('Error: EHLO not accepted from server!'); exit(); } fputs($handle, 'AUTH LOGIN' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 334) { trigger_error('Error: AUTH LOGIN not accepted from server!'); exit(); } fputs($handle, base64_encode($this->smtp_username) . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 334) { trigger_error('Error: Username not accepted from server!'); exit(); } fputs($handle, base64_encode($this->smtp_password) . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 235) { trigger_error('Error: Password not accepted from server!'); exit(); } } else { fputs($handle, 'HELO ' . getenv('SERVER_NAME') . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 250) { trigger_error('Error: HELO not accepted from server!'); exit(); } } if ($this->verp) { fputs($handle, 'MAIL FROM: <' . $this->smtp_username . '>XVERP' . "\r\n"); } else { fputs($handle, 'MAIL FROM: <' . $this->smtp_username . '>' . "\r\n"); } $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 250) { trigger_error('Error: MAIL FROM not accepted from server!'); exit(); } if (!is_array($this->to)) { fputs($handle, 'RCPT TO: <' . $this->to . '>' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) { trigger_error('Error: RCPT TO not accepted from server!'); exit(); } } else { foreach ($this->to as $recipient) { fputs($handle, 'RCPT TO: <' . $recipient . '>' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if ((substr($reply, 0, 3) != 250) && (substr($reply, 0, 3) != 251)) { trigger_error('Error: RCPT TO not accepted from server!'); exit(); } } } fputs($handle, 'DATA' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 354) { trigger_error('Error: DATA not accepted from server!'); exit(); } // According to rfc 821 we should not send more than 1000 including the CRLF $message = str_replace("\r\n", "\n", $header . $message); $message = str_replace("\r", "\n", $message); $lines = explode("\n", $message); foreach ($lines as $line) { $results = str_split($line, 998); foreach ($results as $result) { if (substr(PHP_OS, 0, 3) != 'WIN') { fputs($handle, $result . "\r\n"); } else { fputs($handle, str_replace("\n", "\r\n", $result) . "\r\n"); } } } fputs($handle, '.' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 250) { trigger_error('Error: DATA not accepted from server!'); exit(); } fputs($handle, 'QUIT' . "\r\n"); $reply = ''; while ($line = fgets($handle, 515)) { $reply .= $line; if (substr($line, 3, 1) == ' ') { break; } } if (substr($reply, 0, 3) != 221) { trigger_error('Error: QUIT not accepted from server!'); exit(); } fclose($handle); } } } }
  2. ~/www/блаблабла.ru/catalog/controller/information/contact.php <?php // * @copyright OPENCART.PRO 2011 - 2015. // * @forum http://forum.opencart.pro // * @source See SOURCE.txt for source and other copyright. // * @license GNU General Public License version 3; see LICENSE.txt class ControllerInformationContact extends Controller { private $error = array(); public function index() { $this->load->language('information/contact'); $this->document->setTitle($this->language->get('heading_title')); if (($this->request->server['REQUEST_METHOD'] == 'POST') && $this->validate()) { $mail = new Mail(); $mail->protocol = $this->config->get('config_mail_protocol'); $mail->parameter = $this->config->get('config_mail_parameter'); $mail->smtp_hostname = $this->config->get('config_mail_smtp_hostname'); $mail->smtp_username = $this->config->get('config_mail_smtp_username'); $mail->smtp_password = html_entity_decode($this->config->get('config_mail_smtp_password'), ENT_QUOTES, 'UTF-8'); $mail->smtp_port = $this->config->get('config_mail_smtp_port'); $mail->smtp_timeout = $this->config->get('config_mail_smtp_timeout'); $mail->setTo($this->config->get('config_email')); $mail->setFrom($this->config->get('config_email')); $mail->setSender(html_entity_decode($this->request->post['name'], ENT_QUOTES, 'UTF-8')); $mail->setSubject(html_entity_decode(sprintf($this->language->get('email_subject'), $this->request->post['name']), ENT_QUOTES, 'UTF-8')); $mail->setText($this->request->post['enquiry'] . '\n\n' . $this->request->post['email']); $mail->send(); $this->response->redirect($this->url->link('information/contact/success')); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('information/contact') ); $data['heading_title'] = $this->language->get('heading_title'); $data['text_location'] = $this->language->get('text_location'); $data['text_store'] = $this->language->get('text_store'); $data['text_contact'] = $this->language->get('text_contact'); $data['text_address'] = $this->language->get('text_address'); $data['text_telephone'] = $this->language->get('text_telephone'); $data['text_fax'] = $this->language->get('text_fax'); $data['text_open'] = $this->language->get('text_open'); $data['text_comment'] = $this->language->get('text_comment'); $data['entry_name'] = $this->language->get('entry_name'); $data['entry_email'] = $this->language->get('entry_email'); $data['entry_enquiry'] = $this->language->get('entry_enquiry'); $data['button_map'] = $this->language->get('button_map'); if (isset($this->error['name'])) { $data['error_name'] = $this->error['name']; } else { $data['error_name'] = ''; } if (isset($this->error['email'])) { $data['error_email'] = $this->error['email']; } else { $data['error_email'] = ''; } if (isset($this->error['enquiry'])) { $data['error_enquiry'] = $this->error['enquiry']; } else { $data['error_enquiry'] = ''; } $data['button_submit'] = $this->language->get('button_submit'); $data['action'] = $this->url->link('information/contact', '', 'SSL'); $this->load->model('tool/image'); if ($this->config->get('config_image')) { $data['image'] = $this->model_tool_image->resize($this->config->get('config_image'), $this->config->get('config_image_location_width'), $this->config->get('config_image_location_height')); } else { $data['image'] = false; } $data['store'] = $this->config->get('config_name'); $data['address'] = nl2br($this->config->get('config_address')); $data['geocode'] = $this->config->get('config_geocode'); $data['geocode_hl'] = $this->config->get('config_language'); $data['telephone'] = $this->config->get('config_telephone'); $data['fax'] = $this->config->get('config_fax'); $data['open'] = nl2br($this->config->get('config_open')); $data['comment'] = $this->config->get('config_comment'); $data['locations'] = array(); $this->load->model('localisation/location'); foreach((array)$this->config->get('config_location') as $location_id) { $location_info = $this->model_localisation_location->getLocation($location_id); if ($location_info) { if ($location_info['image']) { $image = $this->model_tool_image->resize($location_info['image'], $this->config->get('config_image_location_width'), $this->config->get('config_image_location_height')); } else { $image = false; } $data['locations'][] = array( 'location_id' => $location_info['location_id'], 'name' => $location_info['name'], 'address' => nl2br($location_info['address']), 'geocode' => $location_info['geocode'], 'telephone' => $location_info['telephone'], 'fax' => $location_info['fax'], 'image' => $image, 'open' => nl2br($location_info['open']), 'comment' => $location_info['comment'] ); } } if (isset($this->request->post['name'])) { $data['name'] = $this->request->post['name']; } else { $data['name'] = $this->customer->getFirstName(); } if (isset($this->request->post['email'])) { $data['email'] = $this->request->post['email']; } else { $data['email'] = $this->customer->getEmail(); } if (isset($this->request->post['enquiry'])) { $data['enquiry'] = $this->request->post['enquiry']; } else { $data['enquiry'] = ''; } // Captcha if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('contact', (array)$this->config->get('config_captcha_page'))) { $data['captcha'] = $this->load->controller('captcha/' . $this->config->get('config_captcha'), $this->error); } else { $data['captcha'] = ''; } $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/information/contact.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/information/contact.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/information/contact.tpl', $data)); } } protected function validate() { if ((utf8_strlen($this->request->post['name']) < 3) || (utf8_strlen($this->request->post['name']) > 32)) { $this->error['name'] = $this->language->get('error_name'); } if (!preg_match('/^[^\@]+@.*.[a-z]{2,15}$/i', $this->request->post['email'])) { $this->error['email'] = $this->language->get('error_email'); } if ((utf8_strlen($this->request->post['enquiry']) < 10) || (utf8_strlen($this->request->post['enquiry']) > 3000)) { $this->error['enquiry'] = $this->language->get('error_enquiry'); } // Captcha if ($this->config->get($this->config->get('config_captcha') . '_status') && in_array('contact', (array)$this->config->get('config_captcha_page'))) { $captcha = $this->load->controller('captcha/' . $this->config->get('config_captcha') . '/validate'); if ($captcha) { $this->error['captcha'] = $captcha; } } return !$this->error; } public function success() { $this->load->language('information/contact'); $this->document->setTitle($this->language->get('heading_title')); $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('heading_title'), 'href' => $this->url->link('information/contact') ); $data['heading_title'] = $this->language->get('heading_title'); $data['text_message'] = $this->language->get('text_success'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/common/success.tpl')) { $this->response->setOutput($this->load->view($this->config->get('config_template') . '/template/common/success.tpl', $data)); } else { $this->response->setOutput($this->load->view('default/template/common/success.tpl', $data)); } } }
  3. Исправил код как посоветовали. Итог: При настройки протокола SMTP , зарегистрированным и незарегистрированным пользователем "заказ из корзины" приходит на почту, т.е ВСЁ ХОРОШО:) , но не отправляется сообщение из "Свяжитесь с нами: Выдает ошибку Notice: Error: DATA not accepted from server! in /var/www/блаблабла.ru/system/library/mail.php on line 423 При настройки протокола ПОЧТА зарегистрированным ,сообщение ушло и пришло на почту т.е ВСЁ ХОРОШО:) но "заказ из корзины" ушел, но на почту не пришел , Не зарегистрированным "сообщение и заказ" ушли, но на почту НЕ ПРИШЛИ
  4. При настройках На первом скрине отправляется заказ на почту, но не работает "Связаться с нами". На втором скрине с точностью наоборот: "Связаться с нами" работает, но не работает отправка заказа на почту. Помогите ! Выручайте!
  5. Проблема в следующем: при разных настройках почты работают разные функции. Как и где можно исправить? Пробовал разные методы, но вернулся к исходному коду
    Спасибо! ocStore 2.3 полёт нормальный!
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.