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

Отображение письма с заказом


muravej4eg

Recommended Posts

Доброго времени суток, господа.

Не силён в PHP - только учусь.

Нужен ваш совет.

Сейчас стоит OcStore 1.0.1

пока без модификаций.

Суть в том, что при оформлении заказа, клиенту приходит письмо с информацией - кто такой, что заказал и куда доставить - всё это отображается без графического оформления и не видно логотипа.. вот пимер

post-16636-0-32506400-1324121912_thumb.jpg

на OcStore 0.2.0 всё без проблем и «танцев с бубном» не было =)

вот пример post-16636-0-95446600-1324122006_thumb.jpg

что делать? Хоть намекните куда копать?

Сравнивал файлы order.tpl (ocstore 1.0.1) и order_confirm.tpl (ocstore 0.2.0)

catalog/view/theme/default/template/mail - отличаются достаточно

Надіслати
Поділитися на інших сайтах


Проблема с логотипом в файле system/library/mail.php, попробуй использовать вариант этого файла из репозитория ocStore http://www.assembla.com/code/ocstoreru/subversion/nodes/trunk/system/library/mail.php

Надіслати
Поділитися на інших сайтах

Проблема с логотипом в файле system/library/mail.php, попробуй использовать вариант этого файла из репозитория ocStore http://www.assembla.com/code/ocstoreru/subversion/nodes/trunk/system/library/mail.php

Файл из репозитория абсолютно идентичен тому, что сейчас установлен..

походу не там трабл..

Надіслати
Поділитися на інших сайтах


что бы появилось оформление колдовал в catalog/view/theme/default/template/mail/order.tpl

order.zip

что бы появился логотип - разкоментировал строку 144 в system/library/mail.php (ОГРОМНОЕ СПАСИБО Yesvik)

Проблема решена, всем спасибо!

  • +1 1
Надіслати
Поділитися на інших сайтах


что бы появилось оформление колдовал в catalog/view/theme/default/template/mail/order.tpl

order.zip

что бы появился логотип - разкоментировал строку 144 в system/library/mail.php (ОГРОМНОЕ СПАСИБО Yesvik)

Проблема решена, всем спасибо!

А что эта за строчка такая? У меня резил из SVN, в mail.php нет ни одной строчки с комментарием, на почту приходит письмо без голотипа (не отображается т.е., он есть в прикрипленных файлах)
Надіслати
Поділитися на інших сайтах


А что эта за строчка такая? У меня резил из SVN, в mail.php нет ни одной строчки с комментарием, на почту приходит письмо без голотипа (не отображается т.е., он есть в прикрипленных файлах)

у меня было подобное, когда мой адрес был в «подозрительном» списке почтовика.. Попроуйте сгенерировать заказ на другие почтовые системы отличные от текущей..

Надіслати
Поділитися на інших сайтах


Строку 144 раскомментируй

Прошу прощение, но в моём случае комментария нет... Что делать???

Файл по пути system/library/mail.php выглядит так:

<?php

final class Mail {

protected $to;

protected $from;

protected $sender;

protected $subject;

protected $text;

protected $html;

protected $attachments = array();

public $protocol = 'mail';

public $hostname;

public $username;

public $password;

public $port = 25;

public $timeout = 5;

public $newline = "\n";

public $crlf = "\r\n";

public $verp = FALSE;

public $parameter = '';

public function setTo($to) {

$this->to = $to;

}

public function setFrom($from) {

$this->from = $from;

}

public function addheader($header, $value) {

$this->headers[$header] = $value;

}

public function setSender($sender) {

$this->sender = html_entity_decode($sender);

}

public function setSubject($subject) {

$this->subject = html_entity_decode($subject);

}

public function setText($text) {

$this->text = $text;

}

public function setHtml($html) {

$this->html = $html;

}

public function addAttachment($file, $filename = '') {

if (!$filename) {

$filename = basename($file);

}

$this->attachments[] = array(

'filename' => $filename,

'file' => $file

);

}

public function send() {

if (!$this->to) {

exit('Error: E-Mail to required!');

}

if (!$this->from) {

exit('Error: E-Mail from required!');

}

if (!$this->sender) {

exit('Error: E-Mail sender required!');

}

if (!$this->subject) {

exit('Error: E-Mail subject required!');

}

if ((!$this->text) && (!$this->html)) {

exit('Error: E-Mail message required!');

}

if (is_array($this->to)) {

$to = implode(',', $this->to);

} else {

$to = $this->to;

}

$boundary = '----=_NextPart_' . md5(time());

$header = '';

$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;

$header .= 'Reply-To: ' . '=?utf-8?B?'.base64_encode($this->sender).'?=' . '<' . $this->from . '>' . $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;

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;

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['file'])) {

$handle = fopen($attachment['file'], 'r');

$content = fread($handle, filesize($attachment['file']));

fclose($handle);

$message .= '--' . $boundary . $this->newline;

$message .= 'Content-Type: application/octetstream; name="' . basename($attachment['file']) . '"' . $this->newline;

$message .= 'Content-Transfer-Encoding: base64' . $this->newline;

$message .= 'Content-Disposition: attachment; filename="' . basename($attachment['filename']) . '"' . $this->newline;

$message .= 'Content-ID: <' . basename($attachment['filename']) . '>' . $this->newline . $this->newline;

$message .= 'X-Attachment-Id: ' . basename($attachment['filename']) . $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') {

$handle = fsockopen($this->hostname, $this->port, $errno, $errstr, $this->timeout);

if (!$handle) {

exit('Error: ' . $errstr . ' (' . $errno . ')');

} else {

if (substr(PHP_OS, 0, 3) != 'WIN') {

socket_set_timeout($handle, $this->timeout, 0);

}

while ($line = fgets($handle, 515)) {

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($this->hostname, 0, 3) == 'tls') {

fputs($handle, 'STARTTLS' . $this->crlf);

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 220) {

exit('Error: STARTTLS not accepted from server!');

}

}

if (!empty($this->username) && !empty($this->password)) {

fputs($handle, 'EHLO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

exit('Error: EHLO not accepted from server!');

}

fputs($handle, 'AUTH LOGIN' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

exit('Error: AUTH LOGIN not accepted from server!');

}

fputs($handle, base64_encode($this->username) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 334) {

exit('Error: Username not accepted from server!');

}

fputs($handle, base64_encode($this->password) . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 235) {

exit('Error: Password not accepted from server!');

}

} else {

fputs($handle, 'HELO ' . getenv('SERVER_NAME') . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

exit('Error: HELO not accepted from server!');

}

}

if ($this->verp) {

fputs($handle, 'MAIL FROM: <' . $this->from . '>XVERP' . $this->crlf);

} else {

fputs($handle, 'MAIL FROM: <' . $this->from . '>' . $this->crlf);

}

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

exit('Error: MAIL FROM not accepted from server!');

}

if (!is_array($this->to)) {

fputs($handle, 'RCPT TO: <' . $this->to . '>' . $this->crlf);

$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)) {

exit('Error: RCPT TO not accepted from server!');

}

} else {

foreach ($this->to as $recipient) {

fputs($handle, 'RCPT TO: <' . $recipient . '>' . $this->crlf);

$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)) {

exit('Error: RCPT TO not accepted from server!');

}

}

}

fputs($handle, 'DATA' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 354) {

exit('Error: DATA not accepted from server!');

}

// 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 . $this->crlf);

} else {

fputs($handle, str_replace("\n", "\r\n", $result) . $this->crlf);

}

}

}

fputs($handle, '.' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 250) {

exit('Error: DATA not accepted from server!');

}

fputs($handle, 'QUIT' . $this->crlf);

$reply = '';

while ($line = fgets($handle, 515)) {

$reply .= $line;

if (substr($line, 3, 1) == ' ') {

break;

}

}

if (substr($reply, 0, 3) != 221) {

exit('Error: QUIT not accepted from server!');

}

fclose($handle);

}

}

}

}

?>

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...

у меня было подобное, когда мой адрес был в «подозрительном» списке почтовика.. Попроуйте сгенерировать заказ на другие почтовые системы отличные от текущей..

Спасибо что сделал и поделился!

Вопрос с письмом юзеру благодаря тебе решил, теперь информационное письмо админу осталось поправить.

Надіслати
Поділитися на інших сайтах


Спасибо что сделал и поделился!

Вопрос с письмом юзеру благодаря тебе решил, теперь информационное письмо админу осталось поправить.

незачто ))

Поставил новый релиз

проблем с отображением писем НИКАКИХ!

Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

короче использовал order.tpl, который вверху прикрепили и вылетают ошибки на 111, 127 и 133 строках, помогите решить пожалуйста, очень срочно надо

вот такая ошибка на 111 - Notice: Undefined variable: comment in /var/www....

Надіслати
Поділитися на інших сайтах


Вопрос с письмом юзеру благодаря тебе решил, теперь информационное письмо админу осталось поправить.

в 0.2.2 админу приходило точно такое же письмо как и клиенту, сейчас админу приходит только заказаные товары и приходиться лезть в админку, чтоб посмотреть заказ.

какой файл ковырять?

и еще, шапка у меня сделана в png на прозрачном фоне, а клиенту она приходит на жутком черном - :) можно это исправить?

Надіслати
Поділитися на інших сайтах


в 0.2.2 админу приходило точно такое же письмо как и клиенту, сейчас админу приходит только заказаные товары и приходиться лезть в админку, чтоб посмотреть заказ.

какой файл ковырять?

нашел в поиске

https://opencartforum.com/topic/4025-ocstore-v101-%d1%80%d0%b5%d0%bb%d0%b8%d0%b7/page__view__findpost__p__35534

и еще, шапка у меня сделана в png на прозрачном фоне, а клиенту она приходит на жутком черном - :) можно это исправить?

ищу решение вопроса

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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