51 votes

Envoyer un courriel avec un modèle en utilisant php

Comment puis-je envoyer un e-mail en utilisant php puis ajouter un modèle de design dans l'e-mail ? J'utilise ceci :

$to = "someone@example.com";  
$subject = "Test mail";  
$message = "Hello! This is a simple email message.";  
$from = "someonelse@example.com";  
$headers = "From: $from";  
mail($to,$subject,$message,$headers);  
echo "Mail Sent.";  

Et ça marche bien ! Le problème est simplement de savoir comment ajouter un modèle.

1voto

T30 Points 170

Vous pouvez utiliser $this dans le modèle comme vous l'êtes dans le fichier d'appel.

Il suffit d'inclure le modèle après le ob_start et récupérer son contenu :

$this->customer = 1234;    //* This variable is used in the template
ob_start();
include 'template.php';
$template = ob_get_clean();
var_dump($template);      //* Outputs '<b>1234</b>'

// template.php
<b><? echo $this->customer ?></b>

0voto

Tout d'abord, vous devez créer un modèle HTML :

<form action="#" id="ContactForm" method="post" enctype="multipart/form-data">
    <table border="0" cellspacing="5" cellpadding="5" style="background-color:#CCCCCC; text-align:center;">
        <tr>
             <td width="15%">Name:</td>
             <td width="85%"><input name="name" type="text" required></td>
         </tr>
         <tr>
             <td>Email:</td>
             <td><input name="email" type="email" required></td>
         </tr>

         <tr>
             <td colspan="2"><input name="sub" type="submit" value="Submit"></td>
         </tr>

     </table>                      
</form>

Le code ci-dessous est le code du mailing qui utilise le modèle.

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name=$_REQUEST['name'];
    $email=$_REQUEST['email'];
    $to=$email; //change to ur mail address
    $subject="UandBlog - Send Email Template Demo";
    $message =  file_get_contents('Your template path'); // Your Template        
    $headers = 'MIME-Version: 1.0'."\r\n";
    $headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
    $headers .= "From: noreply@uandblog.com"; 

    mail($to, $subject, $message, $headers); 
}

Vous pouvez également télécharger le code complet du modèle à l'adresse suivante UandAblog .

0voto

Si vous utilisez phpmailer alors essayez ceci sur

// Content
$mail->isHTML(true); 
$mail->Subject = 'Newsletter Mail';
$mail->Body = file_get_contents('mail.html');
if (!$mail->send()) {
    echo 'Mailer Error: ' . $mail->ErrorInfo;
}

Et si vous utilisez le courrier php, il suffit d'ajouter

$body= file_get_contents('mail.html');
$headers = 'MIME-Version: 1.0'."\r\n";
$header.="Content-Type: text/html;\n\tcharset=\"iso-8859-1\"\n";
$header .="From:<no-reply@youremail.com>\r\n";

Et si vous utilisez CI (Codeigniter) alors dans mon cas, j'ai créé un mail helper de CI mais le reste fonctionne de la même manière.

$message = $this->load->view('front/invoice_email',$data, TRUE); //"Hi, 9999999999 \r\n".";
if(!empty($adminEmail)) {
  send_user_mail($adminEmail, $message, $subject);
}

-1voto

edCoder Points 62

Essayez ceci....

$body='<table width="90%" border="0">
        <tr>
        <td><b>Name:</b></td> <td>'.$name.'</td>
        </tr>
        <tr>
        <td><b>Email:</b></td> <td>'.$email.'</td>
        </tr>
        <tr>
        <td><b>Message:</b></td> <td>'.$message.'</td>
        </tr>
        <tr></table>';

    mail($to,$subject,$body,$headers);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X