prestashop 1.7 cant send emails

907 Views Asked by At
this is some code of my contact form 

to send email.

Email sending tested in prestashop admin page and it works.

But in contact form and register form not working at all.

can anyone help me???

if ($ct->id) {

                $lastMessage = CustomerMessage::getLastMessageForCustomerThread($ct->id);
                $testFileUpload = (isset($file_attachment['rename']) && !empty($file_attachment['rename']));

                // if last message is the same as new message (and no file upload), do not consider this contact
                if ($lastMessage != $message || $testFileUpload) {
                    $cm = new CustomerMessage();
                    $cm->id_customer_thread = $ct->id;
                    $cm->message = $message;
                    if ($testFileUpload && rename($file_attachment['tmp_name'], _PS_UPLOAD_DIR_ . basename($file_attachment['rename']))) {
                        $cm->file_name = $file_attachment['rename'];
                        @chmod(_PS_UPLOAD_DIR_ . basename($file_attachment['rename']), 0664);
                    }
                    $cm->ip_address = (int)ip2long(Tools::getRemoteAddr());
                    $cm->user_agent = $_SERVER['HTTP_USER_AGENT'];
                    if (!$cm->add()) {
                        $this->context->controller->errors[] = $this->trans('An error occurred while sending the message.', array(), 'Modules.Contactform.Shop');
                    }
                } else {
                    $mailAlreadySend = true;
                }
            } else {
                $this->context->controller->errors[] = $this->trans('An error occurred while sending the message.', array(), 'Modules.Contactform.Shop');
            }
        }

        if (!count($this->context->controller->errors) && empty($mailAlreadySend)) {
            $var_list = [
                '{order_name}' => '-',
                '{attached_file}' => '-',
                '{message}' => Tools::nl2br(stripslashes($message)),
                '{email}' =>  $from,
                '{product_name}' => '',
            ];

            if (isset($file_attachment['name'])) {
                $var_list['{attached_file}'] = $file_attachment['name'];
            }

            $id_product = (int)Tools::getValue('id_product');

            if (isset($ct) && Validate::isLoadedObject($ct) && $ct->id_order) {
                $order = new Order((int)$ct->id_order);
                $var_list['{order_name}'] = $order->getUniqReference();
                $var_list['{id_order}'] = (int)$order->id;
            }

            if ($id_product) {
                $product = new Product((int)$id_product);
                if (Validate::isLoadedObject($product) && isset($product->name[Context::getContext()->language->id])) {
                    $var_list['{product_name}'] = $product->name[Context::getContext()->language->id];
                }
            }

            if (empty($contact->email)) {
                Mail::Send(
                    $this->context->language->id,
                    'contact_form',
                    ((isset($ct) && Validate::isLoadedObject($ct)) ? $this->trans('Your message has been correctly sent #ct%thread_id% #tc%thread_token%', array('%thread_id%' => $ct->id, '%thread_token%' => $ct->token), 'Emails.Subject') : $this->trans('Your message has been correctly sent', array(), 'Emails.Subject')),
                    $var_list,
                    $from,
                    null,
                    null,
                    null,
                    $file_attachment
                );
            } else {
                if (!Mail::Send(
                    $this->context->language->id,
                    'contact',
                    $this->trans('Message from contact form', array(), 'Emails.Subject').' [no_sync]',
                    $var_list,
                    $contact->email,
                    $contact->name,
                    null,
                    null,
                    $file_attachment,
                    null,
                    _PS_MAIL_DIR_,
                    false,
                    null,
                    null,
                    $from
                ) || !Mail::Send(
                    $this->context->language->id,
                    'contact_form',
                    ((isset($ct) && Validate::isLoadedObject($ct)) ? $this->trans('Your message has been correctly sent #ct%thread_id% #tc%thread_token%', array('%thread_id%' => $ct->id, '%thread_token%' => $ct->token), 'Emails.Subject') : $this->trans('Your message has been correctly sent', array(), 'Emails.Subject')),
                    $var_list,
                    $from,
                    null,
                    null,
                    null,
                    $file_attachment,
                    null,
                    _PS_MAIL_DIR_,
                    false,
                    null,
                    null,
                    $contact->email
                )) {
                    //

//

   $this->context->controller->errors[] = $this->trans('An error occurred while sending the message.', array(), 'Modules.Contactform.Shop');
                }
            }
        }

        if (!count($this->context->controller->errors)) {
            $this->context->controller->success[] = $this->trans('Your message has been successfully sent to our team.', array(), 'Modules.Contactform.Shop');
        }
    }
0

There are 0 best solutions below