2016-05-12 77 views
0

我正在用codeigniter中的發送網格發送附件郵件。郵件發送成功但下載後附件文件無法顯示。我的代碼: -我正在用codeigniter中的發送網格發送附件郵件

public function test() { 
      $attach = base_url()."/uploads/a.png"; 
      $this->SendMail('[email protected]', '[email protected]', 'sss sub', 'ss msg',$attach, 'dss.png'); 

     } 

發送電網API

function SendMail($from, $email, $subject, $message, $attach = '', $filename = '') 
{ 
     $url = 'https://api.sendgrid.com/'; 
     $user = 'XXXXXX'; 
     $pass = 'XXXXXX'; 

     if ($attach <> '' && $filename <> '') { 

     $params = array(
         'api_user' => $user, 
         'api_key' => $pass, 
         'to' => $email, 
         'fromname' => $from, 
         'from' => $from, 
         'subject' => $subject, 
         'html' => $message, 
         'files[' . $filename . ']' => new \CurlFile($attach), 
          'files[' . $filename . ']' => '@' . $attach, 
        ); 
     } else { 

       $params = array(
         'api_user' => $user, 
         'api_key' => $pass, 
         'to' => $email, 
         'fromname' => $from, 
         'from' => $from, 
         'subject' => $subject, 
         'html' => $message); 
     } 
     $request = $url . 'api/mail.send.json'; 
     $session = curl_init($request); 
     curl_setopt($session, CURLOPT_POST, true); 
     curl_setopt($session, CURLOPT_POSTFIELDS, $params); 
     curl_setopt($session, CURLOPT_HEADER, false); 
     // Tell PHP not to use SSLv3 (instead opting for TLS) 
     //curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); 
     curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false); 
     curl_setopt($session, CURLOPT_RETURNTRANSFER, true); 
     // obtain response 
     $response = curl_exec($session); 
     curl_close($session); 
       return true; 
} 

回答

0

您需要附上文件不同,傳遞更多的參數爲Curlfile構造像

new CurlFile('filename.png', 'image/png', 'filename.png') 

檢查這些鏈接ab