N
N
Nekich962021-03-11 09:43:58
PHP
Nekich96, 2021-03-11 09:43:58

How to send order information using phpmailer?

Hello everyone, I have a basket to which an order is sent after clicking on "Add to cart", after a form opens to fill in the data, I have a question, how can I send an order through phpmailer so that all data about the person and the order are sent to the mail and how set up a handler for this?

<?php

use PHPMailer\PHPMailer\PHPMailer;

require 'PHPMailer/PHPMailer.php';
require 'PHPMailer/SMTP.php';



parse_str($_POST['orderlist'], $orderlist);
parse_str($_POST['userdata'], $userdata);
/*
$orderlist - массив со списком заказа
$userdata - данные заказчика
*/

// При желании, можно посмотреть полученные данные, записав их в файл:
//file_put_contents('cart_data_log.txt', var_export($orderlist, 1) . "\r\n");
//file_put_contents('cart_data_log.txt', var_export($userdata, 1), FILE_APPEND);


// Заголовок письма
$subject = 'Заказ от '.date('d.m.Y').'г.';
// ваш Email
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.mail.ru';
$mail->Port = 587;
$mail->SMTPAuth = true;
$mail->Username = '[email protected]';
$mail->Password = 'Password';
// Email заказчика (как fallback - ваш же Email)
$mail->addAddress('[email protected]', 'Zakazchiky');
$to = !empty($userdata['[email protected]']) ? $userdata['[email protected]'] : $admin_mail;

// Формируем таблицу с заказанными товарами
$tbl = '<table style="width: 100%; border-collapse: collapse;">
  <tr>
    <th style="width: 1%; border: 1px solid #333333; padding: 5px;">ID</th>
    <th style="width: 1%; border: 1px solid #333333; padding: 5px;"></th>
    <th style="border: 1px solid #333333; padding: 5px;">Наименование</th>
    <th style="border: 1px solid #333333; padding: 5px;">Цена</th>
    <th style="border: 1px solid #333333; padding: 5px;">Кол-во</th>
  </tr>';
$total_sum = 0;
foreach($orderlist as $id => $item_data) {
  $total_sum += (float)$item_data['count'] * (float)$item_data['price'];
  $tbl .= '
  <tr>
    <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['id'].'</td>
    <td style="border: 1px solid #333333;"><img src="'.$item_data['img'].'" alt="" style="max-width: 64px; max-height: 64px;"></td>
    <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['title'].'</td>
    <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['price'].'</td>
    <td style="border: 1px solid #333333; padding: 5px;">'.$item_data['count'].'</td>
  </tr>';
}
$tbl .= '<tr>
    <td  style="border: 1px solid #333333; padding: 5px;" colspan="3">Итого:</td>
    <td style="border: 1px solid #333333; padding: 5px;"><b>'.$total_sum.'</b></td>
    <td style="border: 1px solid #333333;">&nbsp;</td>
  </tr>
</table>';
// Тело письма
$body = '
<html>
<head>
  <title>'.$subject.'</title>
</head>
<body>
  <p>Информация о заказчике:</p>
  <ul>
    <li><b>Ф.И.О.:</b> '.$userdata['user_name'].'</li>
    <li><b>Тел.:</b> '.$userdata['user_phone'].'</li>
    <li><b>Email:</b> '.$userdata['user_mail'].'</li>
    <li><b>Адрес:</b> '.$userdata['user_address'].'</li>
    <li><b>Комментарий:</b> '.$userdata['user_comment'].'</li>
  </ul>
  <p>Информация о заказае:</p>
  '.$tbl.'
  <p>Письмо создано автоматически.</p>
</body>
</html>';

// Заголовки
$headers   = []; // или $headers = array() для версии ниже 5.4
$headers[] = 'MIME-Version: 1.0'; // Обязательный заголовок
$headers[] = 'Content-type: text/html; charset=utf-8'; // Обязательный заголовок. Кодировку изменить при необходимости
$headers[] = 'From: Best Shop <[email protected]>'; // От кого
$headers[] = 'Bcc: Admin <'.$admin_mail.'>'; // скрытая копия админу сайта, т.е. вам
$headers[] = 'X-Mailer: PHP/'.phpversion();
// Отправка
$send_ok = true;//mail($to, $subject, $body, implode("\r\n", $headers));

// Ответ на запрос
$response = [
  'errors' => !$send_ok,
  'message' => $send_ok ? 'Заказ принят в обработку!' : 'Хьюстон! У нас проблемы!'
];
// ! Для версий PHP < 5.4 использовать традиционный синтаксис инициализации массивов:
/*
$response = array (
  'errors' => !$send_ok,
  'message' => $send_ok ? 'Заказ принят в обработку!' : 'Хьюстон! У нас проблемы!'
);
*/
exit( json_encode($response) );

6049bb9a3b353429091034.png

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question