2014-04-29 2 views
0

Я пытаюсь получить файл для загрузки как часть контактной формы, я хотел бы, чтобы загруженный файл попал в качестве прикрепления к электронному письму, которое затем можно загрузить после того, как я получил сказал электронный адрес. У меня есть форма для работы, но вместо того, чтобы проходить через вложение, мой файл проходит так:Загрузка php-файла из формы в электронную почту

--==Multipart_Boundary_xc99bf5ef644b3e51650e68e4b9538cffx 
Content-Type: application/pdf; 
name="360x260mm Side Seam Pocket 01 - 1up B2.pdf" 
Content-Transfer-Encoding: base64 

JVBERi0xLjUNJeLjz9MNCjggMCBvYmoNPDwvTWV0YWRhdGEgOSAwIFIvT0NQcm9wZXJ0aWVzPDwv 
RDw8L09OWzEwIDAgUl0vT3JkZXIgMTEgMCBSL1JCR3JvdXBzW10+Pi9PQ0dzWzEwIDAgUl0+Pi9Q 
YWdlcyAyIDAgUi9UeXBlL0NhdGFsb2c+Pg1lbmRvYmoNOSAwIG9iag08PC9MZW5ndGggMTM0NTEv 
U3VidHlwZS9YTUwvVHlwZS9NZXRhZGF0YT4+c3RyZWFtDQo8P3hwYWNrZXQgYmVnaW49Iu+7vyIg 
aWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/Pgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2Jl 
Om5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjAtYzA2MCA2MS4xMzQ3NzcsIDIw 
MTAvMDIvMTItMTc6MzI6 

Here is my php; 




<?php 
    if(isset($_POST['email'])) { 


    $email_to = "[email protected]"; 

    $email_subject = "website html form submissions"; 


    function died($error) { 
     // error code 
     echo "We are very sorry, but there were error(s) found with the form you submitted. "; 
     echo "These errors appear below.<br /><br />"; 
     echo $error."<br /><br />"; 
     echo "Please go back and fix these errors.<br /><br />"; 
     die(); 
     } 

    // validation expected data exists 
    if(!isset($_POST['first_name']) || 
     !isset($_POST['last_name']) || 
     !isset($_POST['email']) || 
     !isset($_POST['telephone']) || 
     !isset($_POST['service']) || 
     !isset($_POST['comments'])){ 
     died('We are sorry, but there appears to be a problem with the form you submitted.');  
    } 


    $first_name = $_POST['first_name']; // required 
    $last_name = $_POST['last_name']; // required 
    $email_from = $_POST['email']; // required 
    $telephone = $_POST['telephone']; // not required 
    $service = $_POST['service']; // not required 
    $comments = $_POST['comments']; // required 
    /* GET File Variables */ 
    $tmpName = $_FILES['attachment']['tmp_name']; 
    $fileType = $_FILES['attachment']['type']; 
    $fileName = $_FILES['attachment']['name']; 



    $error_message = ""; 
    $email_exp = '/^[A-Za-z0-9._%-][email protected][A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/'; 
    if(!preg_match($email_exp,$email_from)) { 
    $error_message .= 'The Email Address you entered does not appear to be valid.<br />'; 
    } 
    $string_exp = "/^[A-Za-z .'-]+$/"; 
    if(!preg_match($string_exp,$first_name)) { 
    $error_message .= 'The First Name you entered does not appear to be valid.<br />'; 
    } 
    if(!preg_match($string_exp,$last_name)) { 
    $error_message .= 'The Last Name you entered does not appear to be valid.<br />'; 
    } 
    if(strlen($comments) < 2) { 
    $error_message .= 'The Comments you entered do not appear to be valid.<br />'; 
    } 
    if(strlen($error_message) > 0) { 
    died($error_message); 
    } 
    $email_message = "Form details below.\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

    if (file($tmpName)) { 
    /* Reading file ('rb' = read binary) */ 
    $file = fopen($tmpName,'rb'); 
    $data = fread($file,filesize($tmpName)); 
    fclose($file); 

    /* a boundary string */ 
    $randomVal = md5(time()); 
    $mimeBoundary = "==Multipart_Boundary_x{$randomVal}x"; 

    /* Header for File Attachment */ 
    $headers .= "\nMIME-Version: 1.0\n"; 
    $headers .= "Content-Type: multipart/mixed;\n" ; 
    $headers .= " boundary=\"{$mimeBoundary}\""; 

    /* Multipart Boundary above message */ 
    $message = "This is a multi-part message in MIME format.\n\n" . 
    "--{$mimeBoundary}\n" . 
    "Content-Type: text/plain; charset=\"iso-8859-1\"\n" . 
    "Content-Transfer-Encoding: 7bit\n\n" . 
    $message . "\n\n"; 

    /* Encoding file data */ 
    $data = chunk_split(base64_encode($data)); 
    } 





    $email_message .= "First Name: ".clean_string($first_name)."\n"; 
    $email_message .= "Last Name: ".clean_string($last_name)."\n"; 
    $email_message .= "Email: ".clean_string($email_from)."\n"; 
    $email_message .= "Telephone: ".clean_string($telephone)."\n"; 
    $email_message .= "Service: ".clean_string($service)."\n"; 
    $email_message .= "Comments: ".clean_string($comments)."\n"; 
    /* Adding attchment-file to message*/ 
    $email_message .= "--{$mimeBoundary}\n" . 
    "Content-Type: {$fileType};\n" . 
    " name=\"{$fileName}\"\n" . 
    "Content-Transfer-Encoding: base64\n\n" . 
    $data . "\n\n" . 
    "--{$mimeBoundary}--\n"; 


    // create email headers 
    $headers = 'From: '.$email_from."\r\n". 
    'Reply-To: '.$email_from."\r\n" . 
    'X-Mailer: PHP/' . phpversion(); 
    @mail($email_to, $email_subject, $email_message, $headers); 



    function IsInjected($str) 
    { 
    $injections = array('(\n+)', 
       '(\r+)', 
       '(\t+)', 
       '(%0A+)', 
       '(%0D+)', 
       '(%08+)', 
       '(%09+)' 
      ); 
    $inject = join('|', $injections); 
    $inject = "/$inject/i"; 
    if(preg_match($inject,$str)) 
    { 
    return true; 
    } 
    else 
    { 
    return false; 
    } 
    } 
    ?> 

    <!-- success html --> 

    Thank you for contacting us. We will be in touch with you very soon. 

    <?php 
    } 
    die(); 
    ?> 

Спасибо заранее.

+1

Два слова: [SwiftMailer] (http://swiftmailer.org/) и [PHPMailer] (https://github.com/PHPMailer/PHPMailer). – PeeHaa

ответ

0

Почему бы вам не использовать Swift Mailer

Docs: Swift Mailer Documentation

Загрузки: Swift-5.1.0

require_once 'lib/swift_required.php'; 

// Create the message 
$message = Swift_Message::newInstance() 

    // Give the message a subject 
    ->setSubject('Your subject') 

    // Set the From address with an associative array 
    ->setFrom(array('[email protected]' => 'John Doe')) 

    // Set the To addresses with an associative array 
    ->setTo(array('[email protected]', '[email protected]' => 'A name')) 

    // Give it a body 
    ->setBody('Here is the message itself') 

    // And optionally an alternative body 
    ->addPart('<q>Here is the message itself</q>', 'text/html') 

    // Optionally add any attachments 
    ->attach(Swift_Attachment::fromPath('my-document.pdf')); 
+0

Спасибо за ответ, Где и как я могу это использовать? –

+0

См.: Http://swiftmailer.org/docs/messages.html также в моем ответе. Я добавил ссылку на документацию и загрузки –

+0

Nice one, Еще раз спасибо. –

Смежные вопросы