PHP Warning: file_get_contents(http://localhost:8080/assets/mail/template.html): failed to open stream: HTTP request failed!

lucasdgimenez

New member
I'm working on a project built with php slim, where I have a registration screen that when clicking on register triggers the /register route of the parent route "/clients"

1693318868553.png

This is the error:

PHP Warning: file_get_contents(http://localhost:8080/assets/mail/template.html): failed to open stream: HTTP request failed!

PHP:
$templateMail = file_get_contents(self::$templateMail);

$message = str_replace('HTMLMessage', $message, $templateMail);

This is the line where the error occurs

The complete file is called Email.php
Code:
<?php

    
    namespace App\Services;

    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);

    use PHPMailer\PHPMailer\PHPMailer;
    
    class Email
    {
        
        private static $HOST = EMAIL_HOST;
        private static $LOGIN = EMAIL_LOGIN;
        private static $PASS = EMAIL_PASS;
        private static $PORT = EMAIL_PORT;
        private static $SMTPSecure = EMAIL_SMTP_SECURE;
        private static $SMTPAuth = EMAIL_SMTP_AUTH;
        private static $templateMail = BASEURL . 'assets/mail/template.html';
        
        public static function send(String $toEmail, String $toName, String $subject, String $message, String $replyTo = null, String $replyToName = null, $attachments = null, $copyTo = null)
        {
            if (ENV == 'local') {
                $toEmail = 'caleksitch@hotmail.com';
                //$toEmail = 'lucasdgimenez@gmail.com';
                $subject = "Teste Fundamenta - {$subject}";
            }

            /*$curl = curl_init();
            curl_setopt($curl, CURLOPT_URL, self::$templateMailURL);
            curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
            $templateMail = curl_exec($curl);

            if ($templateMail === false) {
                throw new \Exception("Failed to fetch template using cURL: " . curl_error($curl));
            }

            curl_close($curl);*/

            
            $templateMail = file_get_contents(self::$templateMail);

            $message = str_replace('HTMLMessage', $message, $templateMail);
            
            $mail = new PHPMailer;
            $mail->isSMTP();
            $mail->CharSet = 'UTF-8';
            $mail->SMTPDebug = 0; //2 para modo debug
            $mail->Host = self::$HOST;
            $mail->Port = self::$PORT;
            $mail->SMTPSecure = self::$SMTPSecure;
            $mail->SMTPAuth = self::$SMTPAuth;
            $mail->Username = self::$LOGIN;
            $mail->Password = self::$PASS;
            $mail->SMTPOptions = array(
                'ssl' => array(
                    'verify_peer' => false,
                    'verify_peer_name' => false,
                    'allow_self_signed' => true
                )
            );
            $mail->setFrom(self::$LOGIN, 'Fundamenta');
            $mail->Subject = $subject;
            $mail->Body = $message;
            $mail->IsHTML(true);
            if ($replyTo !== null) {
                $mail->addReplyTo(trim($replyTo), $replyToName);
            }
            $mail->addAddress(trim($toEmail), $toName);
            if ($copyTo) {
                for ($i = 0; $i < sizeof($copyTo); $i++) {
                    $mail->addCC($copyTo[$i]);
                }
            }
            if ($attachments) {
                foreach ($attachments as $attachment) {
                    $mail->addAttachment($attachment[0], $attachment[1]);
                }
            }
            if (!$mail->send()) {
                throw new \Exception($mail->ErrorInfo);
            }
        }
        
        
    }

I've already tried to google this problem and most indicate curl's solution instead of file_get_contents, the problem is that when trying to implement this curl solution (which is commented in the code above) the system runs an infinite loading, I don't know exactly which one that could be the problem.

The php version is 7.4 and the apache version is 2.4.52
 
Back
Top