#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), чтобы увидеть, как работает код.