U
U
un1ted2202021-06-04 15:47:03
PHP
un1ted220, 2021-06-04 15:47:03

phpmailer mail not sending?

php code:

<?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 = "[email protected]";
            $text = "
            Привет! Ваш подарочный набор уже собирают и совсем скоро он окажется у вас. Как только набор поступит на почту — мы свяжемся с вами в мессенджерах (найдем вас по указанному номеру) и отправим трек-номер посылки, чтобы вы могли отследить ее путешествие.\n
            <br>
            Если у вас возникли любые вопросы, пожалуйста, свяжитесь с нами любым удобным способом:<br>
            Telegtam: asdasda<br>
            Instagram: asdasd/<br>
            WhatsApp: +2131237<br>
            Viber: +21312312<br>
            [email protected]<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 = "[email protected]";
            $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('[email protected]');
            $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]);


Mail is not sent on the hosting (very long loading, and after 504 error), but on the local server (mamP) everything is sent, there are no errors.
I need to send 2 letters, one of them should be with pictures, base64 is stored in the database.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
M
m0ze, 2021-06-04
@m0ze

Hello.
If the problem occurs on the hosting, then you should look for the cause there. Have you tried a simple test of sending mail from hosting using mail()? What result? What do you see in the error logs?

very long loading, and after 504 error
Long loading what exactly? Do you have a separate script, say, for a landing page, or a part of some project/CMS? What is the context?

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question