Webmaster общности: Predpriemach.com | SearchEngines.bg

    Форма за пращане на майл с прикачен файл

    Автор: Melanholly

    Това е форма за пращане на e-mail на определен адрес с възможност за прикачане на файл. Ето и кода:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Изпращане на E-Mail с прикачен файл</title>
    <style type="text/css">
    body{
    background-color:#FFFFFF;
    color:#000000;
    font-size:10px;
    font-family: Verdana, Arial, Helvetica, sans-serif;
    }
    a{
    background-color: #FFFFFF;
    font-family: verdana;
    font-size: 10px;
    text-decoration: none;
    text-align:center;
    color:#000000;
    }
    a:hover{
    text-decoration: underline;
    background-color: #99CC00;
    }
    table{border:1px dashed #000000;}
    td{border-bottom:1px dashed #000000;}
    .text{padding-top: 8px;}
    textarea,input{border:1px dotted #000000;}
    </style>
    </head>
    
    <body>
    <?php
    //Записваме адреса на получател всучея
    $to="admin@localhost";
    //Девинираме формата
    $html_form= "<form action=\"?act=send\" method=\"post\" enctype=\"multipart/form-data\">
    <table width=\"40%\" border=\"0\">
    <tr>
    <td align=\"center\" scope=\"row\">От</td>
    <td valign=\"top\"><input name=\"from_txt\" type=\"text\" size=\"30\" maxlength=\"30\" value=\"".$_POST['from_txt']."\" /></td>
    </tr>
    <tr>
    <td align=\"center\" scope=\"row\">Тема</td>
    <td valign=\"top\"><input name=\"subject\" type=\"text\" size=\"30\" maxlength=\"30\" value=\"".$_POST['subject']."\" /></td>
    </tr>
    <tr>
    <td align=\"center\" valign=\"top\" class=\"text\" scope=\"row\">Съобщението</td>
    <td valign=\"top\"><p>
    <textarea name=\"suob\" cols=\"40\" rows=\"20\">".$_POST['suob']."</textarea>
    </p> </td>
    </tr>
    <tr>
    <td align=\"center\" scope=\"row\">Прикачаване на файл?</td>
    <td><input type=\"file\" name=\"att\"></td>
    </tr>
    <tr align=\"center\" valign=\"top\">
    <th colspan=\"2\" scope=\"row\">
    <input name=\"send\" type=\"submit\" value=\"Изпрати\" /></th>
    </tr>
    </table>
    
    
    </form>
    </body>
    </html>
    ";
    // Започвам превключването на страниците
    switch($_GET['act']){
    case "send":
    //Проверяваме дали е написан e-mail адреса на подателя и зали е валиден
    if($_POST['from_txt']==Null){
    echo"<h3>Грешка не сте попълнили полето \"От\"!</h3>$html_form";exit;}
    elseif (!ereg("@",$_POST['from_txt']))
    {
    echo("<h3>Невалиден E-mail адрес, липсва символът @!</h3> $html_form");
    exit;
    }
    else{$from=$_POST['from_txt'];}
    //ПРоверяваме дали има зададена тема
    if($_POST['subject']==Null){
    echo"<h3>Грешка не сте попълнили полето \"Тема\"!</h3>$html_form";exit;}
    //Проверяваме дали е попълнено съобщение
    if($_POST['suob']==Null){
    echo"<h3>Грешка не сте въвели съобщение!</h3>$html_form";exit;}
    else{$message=$_POST['suob'];}
    //Генерираме произволен hash
    $random_hash = md5(date('r', time()));
    //Дефинираме header-a на съобщението
    $headers = "From: $from";
    $headers .= "\r\nContent-Type: multipart/mixed; boundary=\"PHP-mixed-".$random_hash."\"";
    //дефинираме кодирането на съобщението - MIME base64
    $attachment = chunk_split(base64_encode(file_get_contents($_FILES['att']['tmp_name'])));
    //Дефинираме съобщението
    ob_start(); //Включваме буфера
    ?>
    --PHP-mixed-<?php echo $random_hash; ?>
    Content-Type: multipart/alternative; boundary="PHP-alt-<?php echo $random_hash; ?>"
    
    --PHP-alt-<?php echo $random_hash; ?>
    Content-Type: text/html; charset="windows-1251"
    Content-Transfer-Encoding: 7bit
    
    <? echo "<pre>$_POST[suob]<pre>";?>
    
    
    --PHP-alt-<?php echo $random_hash."--"; if($_FILES['att']['error']==0){//Проверяваме дали има прикачен файл?>
    
    --PHP-mixed-<?php echo $random_hash; ?>
    Content-Type:<?echo($_FILES['att']['type']);?>; name="<?echo($_FILES['att']['name']);?>"
    Content-Transfer-Encoding: base64
    Content-Disposition: attachment
    
    <?php echo $attachment; ?>
    --PHP-mixed-<?php echo $random_hash; ?>--
    <?php
    }
    //Копираме съобщението в променливата $message и изчистваме буфера
    $message = ob_get_clean();
    //Изпращаме E-mail-а
    $mail_sent = @mail( $to, $subject, $message, $headers );
    //Проверяваме дали съобщението е изпратено успешно
    echo $mail_sent ? "Съобщението изпратено." : "Грешка при изпращането моля съобщете на <a href=\"mailto:$to\">администратора<a>.";
    break;
    default:
    echo $html_form;
    break;
    }
    ?>

    В кода съм обяснил всичко ако има някакви въпроси питайте тук. =)
    Кода е авторски и е писан специално за Web-Tourist.Net.

    Оставете коментар