Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

staric

Новачок
  
  • Публікації

    13
  • З нами

  • Відвідування

staric's Achievements

Rookie

Rookie (2/14)

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

Recent Badges

2

Репутація

  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 полёт нормальный!

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.