PHP - Envoi d'emails en utilisant PHP

PHP doit être configuré correctement dans le php.inifichier avec les détails de la façon dont votre système envoie les e-mails. Ouvrez le fichier php.ini disponible dans/etc/ répertoire et recherchez la section intitulée [mail function].

Les utilisateurs de Windows doivent s'assurer que deux directives sont fournies. Le premier s'appelle SMTP et définit l'adresse de votre serveur de messagerie. Le second s'appelle sendmail_from qui définit votre propre adresse e-mail.

La configuration pour Windows devrait ressembler à ceci -

[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only
sendmail_from = [email protected]

Les utilisateurs Linux doivent simplement indiquer à PHP l'emplacement de leur sendmailapplication. Le chemin et tous les commutateurs souhaités doivent être spécifiés dans la directive sendmail_path.

La configuration pour Linux devrait ressembler à ceci -

[mail function]
; For Win32 only.
SMTP = 

; For win32 only
sendmail_from = 

; For Unix only
sendmail_path = /usr/sbin/sendmail -t -i

Maintenant vous êtes prêt à partir -

Envoi d'un e-mail en texte brut

PHP utilise mail()fonction pour envoyer un e-mail. Cette fonction nécessite trois arguments obligatoires qui spécifient l'adresse e-mail du destinataire, le sujet du message et le message réel. En outre, il existe deux autres paramètres facultatifs.

mail( to, subject, message, headers, parameters );

Voici la description de chaque paramètre.

Sr. Non Paramètre et description
1

to

Obligatoire. Spécifie le / les destinataires de l'e-mail

2

subject

Obligatoire. Spécifie l'objet de l'e-mail. Ce paramètre ne peut contenir aucun caractère de nouvelle ligne

3

message

Obligatoire. Définit le message à envoyer. Chaque ligne doit être séparée par un LF (\ n). Les lignes ne doivent pas dépasser 70 caractères

4

headers

Optionnel. Spécifie des en-têtes supplémentaires, tels que From, Cc et Bcc. Les en-têtes supplémentaires doivent être séparés par un CRLF (\ r \ n)

5

parameters

Optionnel. Spécifie un paramètre supplémentaire pour le programme d'envoi de courrier

Dès que la fonction de messagerie est appelée, PHP tentera d'envoyer le courrier électronique, puis il retournera vrai en cas de succès ou faux en cas d'échec.

Plusieurs destinataires peuvent être spécifiés comme premier argument de la fonction mail () dans une liste séparée par des virgules.

Envoi d'un e-mail HTML

Lorsque vous envoyez un message texte en utilisant PHP, tout le contenu sera traité comme un simple texte. Même si vous incluez des balises HTML dans un message texte, il sera affiché sous forme de texte simple et les balises HTML ne seront pas formatées selon la syntaxe HTML. Mais PHP offre la possibilité d'envoyer un message HTML en tant que message HTML réel.

Lors de l'envoi d'un e-mail, vous pouvez spécifier une version de Mime, un type de contenu et un jeu de caractères pour envoyer un e-mail HTML.

Exemple

L'exemple suivant enverra un message électronique HTML à [email protected] en le copiant à [email protected] Vous pouvez coder ce programme de manière à ce qu'il reçoive tout le contenu de l'utilisateur et qu'il envoie ensuite un e-mail.

<html>
   
   <head>
      <title>Sending HTML email using PHP</title>
   </head>
   
   <body>
      
      <?php
         $to = "[email protected]";
         $subject = "This is subject";
         
         $message = "<b>This is HTML message.</b>";
         $message .= "<h1>This is headline.</h1>";
         
         $header = "From:[email protected] \r\n";
         $header .= "Cc:[email protected] \r\n";
         $header .= "MIME-Version: 1.0\r\n";
         $header .= "Content-type: text/html\r\n";
         
         $retval = mail ($to,$subject,$message,$header);
         
         if( $retval == true ) {
            echo "Message sent successfully...";
         }else {
            echo "Message could not be sent...";
         }
      ?>
      
   </body>
</html>

Envoi de pièces jointes avec e-mail

Pour envoyer un e-mail avec un contenu mixte, vous devez définir Content-type en-tête à multipart/mixed. Ensuite, les sections de texte et de pièce jointe peuvent être spécifiées dansboundaries.

Une limite est commencée par deux traits d'union suivis d'un numéro unique qui ne peut pas apparaître dans la partie message de l'e-mail. Une fonction PHPmd5()est utilisé pour créer un nombre hexadécimal à 32 chiffres pour créer un numéro unique. Une limite finale indiquant la section finale de l'e-mail doit également se terminer par deux tirets.

<?php
   // request variables // important
   $from = $_REQUEST["from"];
   $emaila = $_REQUEST["emaila"];
   $filea = $_REQUEST["filea"];
   
   if ($filea) {
      function mail_attachment ($from , $to, $subject, $message, $attachment){
         $fileatt = $attachment; // Path to the file
         $fileatt_type = "application/octet-stream"; // File Type 
         
         $start = strrpos($attachment, '/') == -1 ? 
            strrpos($attachment, '//') : strrpos($attachment, '/')+1;
				
         $fileatt_name = substr($attachment, $start, 
            strlen($attachment)); // Filename that will be used for the 
            file as the attachment 
         
         $email_from = $from; // Who the email is from
         $subject = "New Attachment Message";
         
         $email_subject =  $subject; // The Subject of the email 
         $email_txt = $message; // Message that the email has in it 
         $email_to = $to; // Who the email is to
         
         $headers = "From: ".$email_from;
         $file = fopen($fileatt,'rb'); 
         $data = fread($file,filesize($fileatt)); 
         fclose($file); 
         
         $msg_txt="\n\n You have recieved a new attachment message from $from";
         $semi_rand = md5(time()); 
         $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x"; 
         $headers .= "\nMIME-Version: 1.0\n" . "Content-Type: multipart/mixed;\n" . "
            boundary=\"{$mime_boundary}\"";
         
         $email_txt .= $msg_txt;
			
         $email_message .= "This is a multi-part message in MIME format.\n\n" . 
            "--{$mime_boundary}\n" . "Content-Type:text/html; 
            charset = \"iso-8859-1\"\n" . "Content-Transfer-Encoding: 7bit\n\n" . 
            $email_txt . "\n\n";
				
         $data = chunk_split(base64_encode($data));
         
         $email_message .= "--{$mime_boundary}\n" . "Content-Type: {$fileatt_type};\n" .
            " name = \"{$fileatt_name}\"\n" . //"Content-Disposition: attachment;\n" . 
            //" filename = \"{$fileatt_name}\"\n" . "Content-Transfer-Encoding: 
            base64\n\n" . $data . "\n\n" . "--{$mime_boundary}--\n";
				
         $ok = mail($email_to, $email_subject, $email_message, $headers);
         
         if($ok) {
            echo "File Sent Successfully.";
            unlink($attachment); // delete a file after attachment sent.
         }else {
            die("Sorry but the email could not be sent. Please go back and try again!");
         }
      }
      move_uploaded_file($_FILES["filea"]["tmp_name"],
         'temp/'.basename($_FILES['filea']['name']));
			
      mail_attachment("$from", "[email protected]", 
         "subject", "message", ("temp/".$_FILES["filea"]["name"]));
   }
?>

<html>
   <head>
      
      <script language = "javascript" type = "text/javascript">
         function CheckData45() {
            with(document.filepost) {
               if(filea.value ! = "") {
                  document.getElementById('one').innerText = 
                     "Attaching File ... Please Wait";
               }
            }
         }
      </script>
      
   </head>
   <body>
      
      <table width = "100%" height = "100%" border = "0" 
         cellpadding = "0" cellspacing = "0">
         <tr>
            <td align = "center">
               <form name = "filepost" method = "post" 
                  action = "file.php" enctype = "multipart/form-data" id = "file">
                  
                  <table width = "300" border = "0" cellspacing = "0" 
                     cellpadding = "0">
							
                     <tr valign = "bottom">
                        <td height = "20">Your Name:</td>
                     </tr>
                     
                     <tr>
                        <td><input name = "from" type = "text" 
                           id = "from" size = "30"></td>
                     </tr>
                     
                     <tr valign = "bottom">
                        <td height = "20">Your Email Address:</td>
                     </tr>
                     
                     <tr>
                        <td class = "frmtxt2"><input name = "emaila"
                           type = "text" id = "emaila" size = "30"></td>
                     </tr>
                     
                     <tr>
                        <td height = "20" valign = "bottom">Attach File:</td>
                     </tr>
                     
                     <tr valign = "bottom">
                        <td valign = "bottom"><input name = "filea" 
                           type = "file" id = "filea" size = "16"></td>
                     </tr>
                     
                     <tr>
                        <td height = "40" valign = "middle"><input 
                           name = "Reset2" type = "reset" id = "Reset2" value = "Reset">
                        <input name = "Submit2" type = "submit" 
                           value = "Submit" onClick = "return CheckData45()"></td>
                     </tr>
                  </table>
                  
               </form>
               
               <center>
                  <table width = "400">
                     
                     <tr>
                        <td id = "one">
                        </td>
                     </tr>
                     
                  </table>
               </center>
               
            </td>
         </tr>
      </table>
      
   </body>
</html>