PHP - Senden von E-Mails mit PHP

PHP muss in der korrekt konfiguriert sein php.iniDatei mit den Details, wie Ihr System E-Mails sendet. Öffnen Sie die Datei php.ini, die in verfügbar ist/etc/ Verzeichnis und finden Sie den Abschnitt mit der Überschrift [mail function].

Windows-Benutzer sollten sicherstellen, dass zwei Anweisungen angegeben werden. Das erste heißt SMTP und definiert Ihre E-Mail-Serveradresse. Die zweite heißt sendmail_from und definiert Ihre eigene E-Mail-Adresse.

Die Konfiguration für Windows sollte ungefähr so ​​aussehen -

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

; For win32 only
sendmail_from = [email protected]

Linux-Benutzer müssen PHP lediglich den Speicherort mitteilen sendmailAnwendung. Der Pfad und alle gewünschten Schalter sollten in der Anweisung sendmail_path angegeben werden.

Die Konfiguration für Linux sollte ungefähr so ​​aussehen -

[mail function]
; For Win32 only.
SMTP = 

; For win32 only
sendmail_from = 

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

Jetzt können Sie loslegen -

Senden von E-Mails im Klartext

PHP nutzt mail()Funktion zum Senden einer E-Mail. Diese Funktion erfordert drei obligatorische Argumente, die die E-Mail-Adresse des Empfängers, den Betreff der Nachricht und die tatsächliche Nachricht angeben. Zusätzlich gibt es zwei weitere optionale Parameter.

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

Hier ist die Beschreibung für jeden Parameter.

Sr.Nr. Parameter & Beschreibung
1

to

Erforderlich. Gibt den Empfänger / die Empfänger der E-Mail an

2

subject

Erforderlich. Gibt den Betreff der E-Mail an. Dieser Parameter darf keine Zeilenumbruchzeichen enthalten

3

message

Erforderlich. Definiert die zu sendende Nachricht. Jede Zeile sollte mit einem LF (\ n) getrennt werden. Zeilen sollten nicht länger als 70 Zeichen sein

4

headers

Optional. Gibt zusätzliche Header wie From, Cc und Bcc an. Die zusätzlichen Header sollten mit einem CRLF (\ r \ n) getrennt werden.

5

parameters

Optional. Gibt einen zusätzlichen Parameter für das Send Mail-Programm an

Sobald die Mail-Funktion aufgerufen wird, versucht PHP, die E-Mail zu senden, gibt sie true zurück, wenn sie erfolgreich ist, oder false, wenn sie fehlschlägt.

In einer durch Kommas getrennten Liste können mehrere Empfänger als erstes Argument für die Funktion mail () angegeben werden.

Senden von HTML-E-Mails

Wenn Sie eine Textnachricht mit PHP senden, wird der gesamte Inhalt als einfacher Text behandelt. Selbst wenn Sie HTML-Tags in eine Textnachricht aufnehmen, wird diese als einfacher Text angezeigt und HTML-Tags werden nicht gemäß der HTML-Syntax formatiert. PHP bietet jedoch die Möglichkeit, eine HTML-Nachricht als tatsächliche HTML-Nachricht zu senden.

Beim Senden einer E-Mail-Nachricht können Sie eine Mime-Version, einen Inhaltstyp und einen Zeichensatz angeben, um eine HTML-E-Mail zu senden.

Beispiel

Das folgende Beispiel sendet eine HTML-E-Mail-Nachricht an [email protected] und kopiert sie an [email protected]. Sie können dieses Programm so codieren, dass es den gesamten Inhalt vom Benutzer empfängt und anschließend eine E-Mail sendet.

<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>

Senden von Anhängen per E-Mail

Um eine E-Mail mit gemischtem Inhalt zu senden, muss festgelegt werden Content-type Header zu multipart/mixed. Dann können Text- und Anhangsabschnitte innerhalb von angegeben werdenboundaries.

Eine Grenze wird mit zwei Bindestrichen gefolgt von einer eindeutigen Nummer gestartet, die nicht im Nachrichtenteil der E-Mail erscheinen kann. Eine PHP-Funktionmd5()wird verwendet, um eine 32-stellige Hexadezimalzahl zu erstellen, um eine eindeutige Zahl zu erstellen. Eine letzte Grenze, die den letzten Abschnitt der E-Mail kennzeichnet, muss ebenfalls mit zwei Bindestrichen enden.

<?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>