2011-05-26 157 views
1

是否可以从临时目录发送附件? 当我送我收到邮件的print_r($_FILES)作为在codeigniter中发送电子邮件

Array ([file] => Array ([name] => test.doc 
     [type] => application/msword 
     [tmp_name] => /tmp/php2UaLKE 
     [error] => 0 [size] => 681472) 
    ) 

和我的错误是无法找到以下电子邮件附件:/tmp/php2UaLKE/EasyToEat.doc

和我的发言,如:

$attachment=$_FILES['file']['tmp_name'].'/'.$_FILES['file']['name'];   
$this->email->attach($attachment); 

我想知道的是,可以附加一个文档,而无需上传,要指定位置笨的服务器上的邮件?

回答

1

我其实只是做了这个...它有一个比你需要更多,但它确实是这样。将文件写入临时目录,然后通过电子邮件发送。


function send_weekly_report() 
    { 
     $server_ip = $_SERVER['REMOTE_ADDR']; 
     if($server_ip != '127.1.1.1') 
     { 
      $this->load->model('admin_model'); 
      $this->load->helper('csv_helper'); 
      $this->load->helper('file'); 
      //create CSV Array 
      $header = array("Sales Rep", "Client", "Action Taken", "Won or Lost", "Action Why", "Current Vendor", "Comp. Cal Program", "Comp. Cal Date", "Notes", "Time"); 
      $data = $this->admin_model->load_week();   
      $output = array_merge(array($header), $data); 

      $csv = array_to_csv($output); 
      $filename = '/tmp/'.time().".csv"; 
      if (! write_file($filename, $csv)) 
      { 
       $this->load->library('email'); 
       $this->email->from('[email protected]', 'Admin'); 
       $this->email->to('[email protected]'); 

       $this->email->subject('Weekly Sales Test FAIL!!!!!'); 
       $this->email->message('Weekly Report Failed!'); 
       $this->email->send(); 
      } 
      else 
      { 
       //send email 
       $this->load->library('email'); 
       $this->email->from('[email protected]', 'Admin'); 
       $this->email->to('[email protected]'); 

       $this->email->subject('Weekly Sales Test'); 
       $this->email->message('Please find the attached report.');  
       $this->email->attach($filename); 
       $this->email->send(); 

       //echo $this->email->print_debugger();     
      } 

     } 
    } 
+0

我找的,这并不需要上传文件到任何位置的代码。 – 2011-05-27 03:18:49

0

你忘了一两件事:

$attachment=$_FILES['file']['tmp_name'].'/'.$_FILES['file']['name'];   
$this->email->attach($attachment); 

文件路径是你的阵列的 “tmp_name的值”(不是 “名称”)。
试试这个:

$this->email->attach($_FILES['file']['tmp_name']); 

希望这有助于...

+0

在这里,我收到附件名称为phpa23mPB的邮件。但是当我保存时,我无法打开该文件。 – 2011-05-27 03:17:51

+1

尝试将文件移至其他目标。 _move_uploaded_file($ _ FILES [“file”] [“tmp_name”],'path/to/directory /'。$ _FILES [“file”] [“name”]); _。那么你应该可以使用该文件。 – hoferm 2011-05-27 08:36:04