Ошибка почты при регистрации аккаунта

Тема в разделе "Ошибки и их решения", создана пользователем Sergo, 9 апр 2015.

  1. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    Добрый день.

    По-моему, в сборке 2.0.2.0 есть ошибка.

    В файле модели catalog/model/account/customer.php, перед строкой №78: "$mail->setSubject($this->language->get('text_new_customer'));" не хватает строк:

    $mail->setTo($this->config->get('config_email'));
    $mail->setFrom($this->config->get('config_email'));
    $mail->setSender($this->config->get('config_name'));

    Ибо при регистрации клиента система ругается на то, что не хватает полей To, From и Sender.

    Если я не прав и значения этих полей должны браться из какого-то другого места, поправьте меня.
     
    SiteMix, KOTEHKA и Romans нравится это.
  2. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
  3. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    Ах вот оно что. Понял. Спасибо.
     
  4. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    А нет. И не должно быть.. так как это уже все задано выше...
     
  5. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    Можете ткнуть где это задано?
     
  6. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    чуть выше на пяток строк..
     
  7. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    На пяток строк выше не вижу, вижу на пару десятков строк выше:

    Код:
            
            $mail->setTo($data['email']);
            $mail->setFrom($this->config->get('config_email'));
            $mail->setSender($this->config->get('config_name'));
            $mail->setSubject($subject);
            $mail->setText($message);
            $mail->send();
    
            // Send to main admin email if new account email is enabled
            if ($this->config->get('config_account_mail')) {
                $message  = $this->language->get('text_signup') . "\n\n";
                $message .= $this->language->get('text_website') . ' ' . $this->config->get('config_name') . "\n";
                $message .= $this->language->get('text_firstname') . ' ' . $data['firstname'] . "\n";
                $message .= $this->language->get('text_lastname') . ' ' . $data['lastname'] . "\n";
                $message .= $this->language->get('text_customer_group') . ' ' . $customer_group_info['name'] . "\n";
                $message .= $this->language->get('text_email') . ' '  .  $data['email'] . "\n";
                $message .= $this->language->get('text_telephone') . ' ' . $data['telephone'] . "\n";
    
                $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_host');
                $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->setSubject($this->language->get('text_new_customer'));
                $mail->setText($message);
                $mail->send();
                ...
    
            }
    Вы об этом? Если да, то эти строки относятся к другому экземпляру объекта Mail.
     
  8. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    Кстати еще одна ошибка, в файле catalog/controller/account/success.php, в строке 32:
    Код:
    $data['text_message'] = sprintf($this->language->get('text_message'), $this->url->link('information/contact'));
    А должно быть:

    Код:
    $data['text_message'] = sprintf($this->language->get('text_message'), $this->config->get('config_name'), $this->url->link('information/contact'));
     
  9. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    нет не должно. Я уже писал @Romans и он исправил перевод для след версии, а там нет места для config_name
    т.е в языке будет так
    Код:
    $_['text_message']  = '<p>Поздравляем! Ваш Личный Кабинет был успешно создан.</p><p>Теперь вы можете воспользоваться дополнительными возможностями: просмотр истории заказов, печать счета, изменение своей контактной информации и адресов доставки и многое другое.</p><p>Если у Вас есть какие-либо вопросы,  <a href="%s">напишите нам</a>.</p>';
    
     
  10. Ален

    Ален Эксперт

    Сообщения:
    2.056
    Симпатии:
    640
    а у меня не ругается...

    да, об этом. Вы правы. Это баг.
     
    Последнее редактирование: 9 апр 2015
  11. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    А ну значит баг был не в коде, а в переводе =)
     
  12. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.434
    Симпатии:
    780
    Все верно написали, не хватает
    Код:
                $mail->setTo($this->config->get('config_email'));
                $mail->setFrom($this->config->get('config_email'));
                $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
     
    SiteMix нравится это.
  13. Sergo

    Sergo Новичок

    Сообщения:
    7
    Симпатии:
    3
    А ну да, в третьей строке именно так:
    Код:
    $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES, 'UTF-8'));
     
  14. KOTEHKA

    KOTEHKA Новичок

    Сообщения:
    5
    Симпатии:
    0
    Спасибо большое, здоровья Вам Уважаемый и много денег!
     
  15. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Я только что глянут в оригинальной версии 2.2
    PHP:
            $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($data['email']);
            
    $mail->setFrom($this->config->get('config_email'));
            
    $mail->setSender(html_entity_decode($this->config->get('config_name'), ENT_QUOTES'UTF-8'));
            
    $mail->setSubject($subject);
            
    $mail->setText($message);
            
    $mail->send();
    Вот там есть кусок кода
     
  16. solunski.d

    solunski.d Эксперт

    Сообщения:
    1.569
    Симпатии:
    432
    Роман, написал чуть выше, что не хватает.
     
  17. KOTEHKA

    KOTEHKA Новичок

    Сообщения:
    5
    Симпатии:
    0
    Я прошу прощения за оффтоп или некропост. Зато тему апнул :rolleyes: