@un1ted220

Не отправляется почта phpmailler?

Код php:
<?php

require 'phpmailer/PHPMailer.php';
require 'phpmailer/SMTP.php';
require 'phpmailer/Exception.php';
require_once 'db/db.php';



$url = ((!empty($_SERVER['HTTPS'])) ? 'https' : 'http') . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$parts = parse_url($url);
parse_str($parts['query'], $query);

if (isset($query["imgtoken"])) {
    $getUsers = $connect->prepare("SELECT * FROM chtotamc_price.img WHERE `hash` LIKE ':token' ");
    $getUsers->execute(array(':token' => $query["imgtoken"]));
    $results = $getUsers->fetchAll();
}


// Настройки PHPMailer
$mail = new PHPMailer\PHPMailer\PHPMailer();
try {
    $mail->isSMTP();   
    $mail->CharSet = "UTF-8";
    $mail->SMTPAuth   = true;
    $mail->Debugoutput = function($str, $level) {$GLOBALS['status'][] = $str;};

    // Настройки вашей почты
    $mail->Host       = 'smtp.mail.ru'; // SMTP сервера вашей почты
    $mail->Username   = '********'; // Логин на почте
    $mail->Password   = '********'; // Пароль на почте
    $mail->SMTPSecure = 'SSL';
    $mail->Port       = 465;
    $mail->setFrom('******, 'Подарочные наборы'); // Адрес самой почты и имя отправителя

    for ($i=0; $i < 2; $i++) { 
        if ($i == 0) {
            $name = "Заказ";
            $email = "sdas@gmail.com";
            $text = "
            Привет! Ваш подарочный набор уже собирают и совсем скоро он окажется у вас. Как только набор поступит на почту — мы свяжемся с вами в мессенджерах (найдем вас по указанному номеру) и отправим трек-номер посылки, чтобы вы могли отследить ее путешествие.\n
            <br>
            Если у вас возникли любые вопросы, пожалуйста, свяжитесь с нами любым удобным способом:<br>
            Telegtam: asdasda<br>
            Instagram: asdasd/<br>
            WhatsApp: +2131237<br>
            Viber: +21312312<br>
            sdas@gmail.com<br>
            <br>
            На всякий случай перепроверьте данные, которые вы указали в вашем заказе. Если что-то изменилось, свяжитесь с нами в течение двух часов: Имя: ". $query['name'] . ". Номер: ". $query["tel"] . ". Адресс: ". $query['address'] . ". Email: ". $query['email'];

            // Формирование самого письма
            $title = "Спасибо за заказ!";
            $body = "
            <h2>Спасибо за заказ!</h2>
            <b>Имя:</b> $name<br>
            <b>Почта:</b> $email<br><br>
            <b>Сообщение:</b><br>$text
            ";
            $mail->addAddress($query["email"]);
            $mail->isHTML(true);
            $mail->Subject = $title;
            $mail->Body = $body;  
            $mail->send();
            
        } else {

            // Переменные, которые отправляет пользователь
            $name = "Заказ";
            $email = "sadas@gmail.com";
            $text = "Футболка: " . $query["tshirt"] . ". Размер: " . $query["tshirtsz"] . ". Сумка: " . $query["bag"] . ". Кружка : " . $query["cap"] . ". Гирлянда: " . $query["garlend"] . ". Паспорт: " . $query["pass"] . ". Открытка: " . $query["card"] . ". Шоколад: " . $query["chocolate"] . ". Коробка: " . $query["box"]. ". Имя: ". $query['name'] . ". Номер: ". $query['tel'] . ". Адресс: ". $query['address'] . ". Email: ". $query['email'] . ". Сообщение: ". $query['msg'];

            // Формирование самого письма
            $title = "Данные заказа";
            $body = "
            <h2>Данные заказа</h2>
            <b>Имя:</b> $name<br>
            <b>Почта:</b> $email<br><br>
            <b>Сообщение:</b><br>$text
            ";
            if (isset($query["imgtoken"])) {
                foreach($results as $item){
                    $img = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $item["img"]));
                    $mail->AddStringAttachment($img, $item["id"].".png", "base64", "image/png");
                }
            }
            $mail->addAddress('asdasd@gmail.com');
            $mail->isHTML(true);
            $mail->Subject = $title;
            $mail->Body = $body;  
            $mail->send();
        }
        


    }
} catch (Exception $e) {
    $result = "error";
    $status = "Сообщение не было отправлено. Причина ошибки: {$mail->ErrorInfo}";
}


// Отображение результата
echo json_encode(["result" => $result, "resultfile" => $rfile, "status" => $status]);


Почта не отправляется на хостинге(очень долгая загрузка, а после 504 ошибка), но на локальном сервере(mamP) все отправляется, ошибок никаких нету.
Мне нужно отправить 2 письма, одно из них должно быть с картинками, в бд хранятся base64.
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ответы на вопрос 1
m0ze
@m0ze
The Gunner
Привет.

Если пробелма возникает на хостинге, то и искать причину следует там же. Пробовали простой тест отправки почты сделать с хостинга средствами mail()? Какой результат? Что в логах ошибок видите?

очень долгая загрузка, а после 504 ошибка
Долгая загрузка чего конкретно? У вас это отдельный скрипт, скажем, для лендинга, или часть какого-то проекта/CMS? Каков контекст?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Laptop.ru Москва
от 150 000 до 190 000 ₽
DKLINE Санкт-Петербург
от 120 000 до 150 000 ₽
Laptop.ru Москва
от 130 000 до 170 000 ₽
19 июн. 2021, в 11:39
12000 руб./за проект
19 июн. 2021, в 11:11
100 руб./за проект