Как отправить электронное письмо в prestashop?

#php #prestashop-1.7

#php #prestashop-1.7

Вопрос:

Я попытался отправить электронное письмо с помощью функции mail() php. Но это не отправка электронных писем.

Код:

 mail("boidurja@consultbop.com", "test", "testing");
 

Это мои настройки электронной почты

SMTP-сервер: smtp.gmail.com Шифрование: SSL Порт: 465

Когда я отправляю тестовое письмо, я получаю электронное письмо. Но я не получаю никаких электронных писем из написанного мной кода.

Кто-нибудь может помочь?

Комментарии:

1. Вы получаете какие-либо ошибки, возможно, в журналах?

2. Я думаю, что это ошибка из error.log sh: 1: /usr/sbin/sendmail: not found

3. Вы пробовали запускать sudo apt-get install sendmail ?

4. Я использую промежуточный сервер. Как мне запустить sudo apt-get install sendmail ?

5. Можете ли вы подключиться по ssh к этому промежуточному серверу? Для этого вам нужен доступ к cli.

Ответ №1:

Вот как я отправляю электронные письма в prestashop:

 $email = 'my.email@gmail.com;other.email@gmail.com';
//$email = 'my.email@gmail.com';
// Send Mail
$sendorders = Mail::Send($this->context->language->id,
'template_en',
'Order '.$id_order ,
    array(
                        '{order_id}'            => $id_order,
                        '{firstname}'           => $client_firstname,
                        '{lastname}'            => $client_lastname,
                        '{delivery_block_txt}'  => $delivery,
                        '{delivery_block_html}' => $delivery,
                        '{client_city}'         => $client_city,
                        '{client_postcode}'     => $client_postcode,
                        '{client_country}'      => $client_country,
                        '{client_phone}'        => $client_phone,
                        '{products_html}'       => $products_email,
    ),
    explode(';', $email),
    //$email,
    NULL, //receiver name
    'local@materiel-chr-pro.com', //from email address
    'TEST Local Orders',  //from name
    $attach, //file attachment - no attachment = NULL
    NULL, //mode smtp

    _PS_MODULE_DIR_.'module_exemple/mails'

);
 

Вы можете посмотреть документацию здесь: https://devdocs.prestashop.com/1.7/development/mail /

Переменные внутри массива, мы используем их в шаблоне электронной почты.

Ответ №2:

Функция PHP mail() будет использовать установленный почтовый сервер на том же сервере для отправки электронных писем (если таковые имеются), а не внешние SMTP (ы).

Если вы хотите отправлять электронную почту «способом Prestashop», вам нужно взглянуть на класс Mail

 /classes/Mail.php
 

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

Обратите внимание, что вам понадобится шаблон TPL с вашим почтовым содержимым, вы можете проверить модули по умолчанию (например, ps_emailalerts), чтобы увидеть, как работает код.