Bonjour,
J'ai réalisé un petit code pour envoyer des mails, mais quand je les envoies ils arrivent bien mais ne prennent pas en compte le style et mon image , comment faire cela?.
voici mes fichier :
controller.php

  public function loadTwig() {
    $loader = new Twig_Loader_Filesystem('MVC/view'); //folder wich contain the template
    $twig = new Twig_Environment($loader, array(
      'cache' => false,
      'charset' => "utf-8",
      'debug' => true
    ));
    //for enabled the dump in twig = to var_dump in php
    $twig->addExtension(new Twig_Extension_Debug());

    return $twig;
  }
  public function sendEmail($tabEmail) {
    var_dump($tabEmail);
    if($_SERVER['SERVER_NAME'] == 'localhost'){

      $transport = new Swift_SmtpTransport('smtp.gmail.com', 465, 'ssl');
      $transport->setUsername('******@gmail.com');
      $transport->setPassword('********');
    }
    else{

      $transport = new Swift_MailTransport();

    }

    $mailer = new Swift_Mailer($transport);

    $message = (new Swift_Message($tabEmail['subject']))
      ->setFrom(['*******@gmail.com'])
      ->setTo([$tabEmail['email'] => $tabEmail['name'])
      ->setContentType("text/html")
      ->setCharset('utf-8')
      ->setBody($tabEmail['message']);

    $result = $mailer->send($message);
  }
  public function viewEmail() {
    if(isset($_POST['submit'])) {
      $name = $_POST['name'];
      $email = $_POST['email'];
      $subject = $_POST['subject'];
      $message = $_POST['message'];
      $templateEmail = $this->loadTwig()->loadTemplate('email.html.twig');
      $emailUser = $templateEmail->render(array(
        "email" => $email,
        "message" => $message,
      ));

      $tabEmail = array(
        "name" => $name,
        "email" => "******@gmail.com",
        "subject" => $subject,
        "message" => $emailUser
      );

      $this->sendEmail($tabEmail);
    }

    $templateIndex = $this->loadTwig()->loadTemplate('default.html.twig');
    return $templateIndex->render(array());
  }
}

email.html.twig

<!DOCTYPE html>
  <html>
    <head>
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <title> envoyer un mail </title>
      <link rel="stylesheet" href="vendor/bootstrap/css/bootstrap.css">
    </head>
    <body>
    <div class="container">
            <div class="row">
                <div class="col-md-12">
                    <div class="jumbotron" style="background-color: brown; color: black">
                    <center><h2 style="font-weight: bold; margin-top: 10%">Send By {{ email }}</h2></center>                    
                    <div class="row">
                        <div class="col-md-12">
                            <center>
                                <br>
                                <p>
                                    {{ message }}
                                </p>
                            </center>
                        </div>
                        <div class="col-md-12">
                            <center><img src="img/jo2024.png" alt="" style="width: 12%;"></center>
                        </div>
                    </div>
                    </div>
                </div>
            </div>
    </div> 
    </body>
    </html>

1 réponse


Salut,

C'est normal que tes images et css ne se chargent pas, il faut mettre l'url complet vers la ressource (avec le l'url de ton site) ;)

Au plaisir,