2016-07-13 5 views
0

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

<?php 
     if (isset($_POST['submit'])) { 
     $headers = "From: [email protected] mailer \r\n"; 
     echo $message .= $_POST['message']; 
      /* GET File Variables */ 
     $tmpName = $_FILES['attachment']['tmp_name']; 
     $fileType = $_FILES['attachment']['type']; 
     $fileName = $_FILES['attachment']['name']; 

     if (file_exists($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)); 

      /* Adding attchment-file to message*/ 
      $message .= "--{$mimeBoundary}\n" . 
      "Content-Type: {$fileType};\n" . 
      " name=\"{$fileName}\"\n" . 
      "Content-Transfer-Encoding: base64\n\n" . 
      $data . "\n\n" . 
      "--{$mimeBoundary}--\n"; 

     } 
     $to_user = "[email protected]"; 
     $flgchk = mail("$to_user", "$subject", "$message", "$headers"); 

      if ($flgchk) { 
      echo "Done, <br>"; 
      } 
      else 
      {   
      echo "Failed to send email, <br>"; 
      echo "Redirecting you to your <a href=\"?page=inbox.php\">Inbox</a>"; 
      } 
     } 
     ?> 
     <form name="form1" method="post" action="" enctype="multipart/form-data"> 
     <table> 
      <tr> 
      <td width='20'><b>Select File:</b> </td> 
      <td width='20'><input type="file" name="attachment"></td> 
      </tr> 
      <p><td> 
      <input type="submit" name="Submit" value="Send" class="Submit" /></td></tr></table> 
      </p> 
     </form> 

Вы можете отредактировать этот код или отправить мне другой рабочий код.

+0

Не пытайтесь сделать это самостоятельно; используйте что-то вроде [SwiftMailer] (http://swiftmailer.org/), чтобы избежать беспорядочных осложнений. – Repox

ответ

1

Я создал демоверсию, используя PHPMailer. Первая загрузка phpmailer.class.php файл. Вы можете скачать здесь: http://github.com/PHPMailer/PHPMailer

require_once('/class.phpmailer.php'); // Your full path of phpmailer.php file 

$email = new PHPMailer(); 
$email->From  = 'From email address'; //From email address 
$email->FromName = 'Your name'; //your name 
$email->Subject = 'Message'; //Message 
$email->Body  = 'Body Text Message'; //Body message 
$email->AddAddress('To email address'); //To email address 

$attach_file = 'Your file path'; //Attached file path 

$email->AddAttachment($attach_file, 'file_name.doc'); 

return $email->Send(); 
+0

без использования phpmailer, потому что я работаю на реальном сервере, а не на localhost – srikanth

+0

Пожалуйста, прочитайте «Отправка электронной почты с приложением». Он работает в прямом эфире. http://webcheatsheet.com/php/send_email_text_html_attachment.php –

+0

ok Можно ли добавить этот код после кода выше? – srikanth

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

  • Нет связанных вопросов^_^