onsdag 12 oktober 2011

Php - mailserver

I detta inlägg kommer jag gå igenom hur man skapar ett enkelt mailsystem.
Koden hittade jag för länge sen när jag var ute och fiskade på nätet, jag har även en version där jag skickar med en bild i mailet.

Du kommer kunna fylla i ett bokningsformulär med information, som sedan skickas till din mail-adress.

Steg1
Skapa en ny php-fil med namnet "boka_form"
Kopiera och klistra in följande mellan <body> och </body>:


          <table cellpadding="0" cellspacing="0" border="0" width="520px"> 


    <tr><td style="height:10px"></td></tr> 
    <tr> 
      <td colspan="2" style="text-align:justify; line-height:15px;" class="body"> 
        
      <form name="frm" method="POST" action="send_mail.php" enctype="multipart/form-data"> 
          <tr> 
            <td width="23%" class="body"> Namn</td> 
            <td width="3%" class="body">:</td> 
            <td width="74%"><input type="text" name="strname" class="textfield"></td> 
        </tr> 
        <tr><td style="height:3px"></td></tr> 
        <tr> 
            <td width="23%" class="body"> Kontakt nr.</td> 
            <td width="3%" class="body">:</td> 
            <td width="74%"><input type="text" name="strno" class="textfield"></td> 
        </tr> 
        <tr><td style="height:3px"></td></tr> 
        <tr> 
            <td width="23%" class="body"> Email</td> 
            <td width="3%" class="body">:</td> 
            <td width="74%"><input type="text" name="stremail" class="textfield"></td> 
        </tr> 
        <tr><td style="height:3px"></td></tr> 
        <tr> 
            <td width="23%" class="body"> Kommentar<br /> (max 125 tecken)</td> 
            <td width="3%" class="body">:</td> 
            <td width="74%"><textarea cols="26" maxlength="125" name="strcomments"></textarea></td> 
        </tr> 
        <tr><td style="height:3px"></td></tr> 



        <tr> 
            <td colspan="3" align="center"> 
                <input type="submit" value="Skicka" name="submit" <input type="reset" value="Rensa" name="reset"> 
            </td> 
        </tr> 
   
        
            </form> 
      </table>   


Steg2
Skapa en ny php-fil med namnet "send_mail"
Kopiera och klistra in följande:


<?php            
       $strname=ucfirst($_REQUEST["strname"]);
       $phone=$_REQUEST["strno"];
       if($phone != ""){ $strno=$phone; } else { $strno="-"; }   
       
    $stremail=$_REQUEST["stremail"];   
    $strcomments=ucfirst($_REQUEST["strcomments"]);


    $strresume_name=$_FILES["strresume"]["name"];
    $strresume_type=$_FILES["strresume"]["type"];
    $strresume_size=$_FILES["strresume"]["size"];
    $strresume_temp=$_FILES["strresume"]["tmp_name"];


  if (isset($strname) && isset($stremail) && isset($strcomments))
  {
   
        $message= '
            <table cellspacing="0" cellpadding="8" border="0" width="400">
            <tr>
                <td colspan="2"></td>
            </tr>


            <tr bgcolor="#eeeeee">
                <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Namn</strong></td>
                <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strname.'</td>
            </tr>
       
              <tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
            <tr bgcolor="#eeeeee">
              <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kontakt nr.</strong></td>
              <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strno.'</td>
              </tr>


            <tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
            <tr bgcolor="#eeeeee">
                <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Email</strong></td>
                <td style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$stremail.'</td>
            </tr>


            <tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
           
            <tr bgcolor="#eeeeee">
                <td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;"><strong>Kommentar</strong></td>
            </tr>              

            <tr bgcolor="#eeeeee">
                <td colspan="2" style="font-family:Verdana, Arial; font-size:11px; color:#333333;">'.$strcomments.'</td>
            </tr>               
                                   
            <tr><td colspan="2" style="padding:0px;"><img src="images/whitespace.gif" alt="" width="100%" height="1" /></td></tr>
         </table>';


    
    $subject = "Nytt mail från svenskphp.blogspot.com";
   
    // Till emailadress:
    $to="din@emailadress.se";


    // Email header med attachment


    $fp = fopen($strresume_temp, "rb");
    $file = fread($fp, $strresume_size);


    $file = chunk_split(base64_encode($file));
    $num = md5(time());
   
        //Normala headers


    $headers  = "From: ".$strname."<".$stremail.">\r\n";
       $headers  .= "MIME-Version: 1.0\r\n";
       $headers  .= "Content-Type: multipart/mixed; ";
       $headers  .= "boundary=".$num."\r\n";
       $headers  .= "--$num\r\n";


        // Hjälper till att ta bort spamm   


    $headers .= "Message-ID: <".gettimeofday()." TheSystem@".$_SERVER['SERVER_NAME'].">\r\n";
    $headers .= "X-Mailer: PHP v".phpversion()."\r\n";         


        // Med meddelande
       
    $headers .= "Content-Type: text/html; charset=iso-8859-1\r\n";
       $headers .= "Content-Transfer-Encoding: 8bit\r\n";
       $headers .= "".$message."\n";
       $headers .= "--".$num."\n"; 


        // Ifall du har en "attachment", tex bild osv


    $headers  .= "Content-Type:".$strresume_type." ";
       $headers  .= "name=\"".$strresume_name."\"r\n";
       $headers  .= "Content-Transfer-Encoding: base64\r\n";
       $headers  .= "Content-Disposition: attachment; ";
       $headers  .= "filename=\"".$strresume_name."\"\r\n\n";
       $headers  .= "".$file."\r\n";
       $headers  .= "--".$num."--";


    // Skicka mail
       
       @mail($to, $subject, $message, $headers);
  
     fclose($fp);
    echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#333333; font-weight:bold">Din information skickades.<br /></font>';
}
else
    {
echo '<font style="font-family:Verdana, Arial; font-size:11px; color:#F3363F; font-weight:bold">Filen skickades inte, kontrollera att du fyllt i alla fält.</font>';
    }
?> 


Du enkelt ändra utseendet för ditt meddelande i variabeln $message
Ifall du har problem med åä och ö har du förmodligen problem med din charset, testa då att lägga in
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Längst upp i dokumentet och testa igen.

Inga kommentarer:

Skicka en kommentar