2016-08-16 71 views
4

sendgrid web api v3を初めて使用しました。リンクhereSendgrid添付ファイル付きメールをWeb API v3を使用して送信

今すぐ。 api 'POST https://api.sendgrid.com/v3/mail/send'を使用してプレーンhtmlを送信するのは簡単でしたが、私はファイル(csv/xls、pdf)を添付してこのインスタンスを作成しました。

ここ

以下の私のコードです:

My機能postSendMail

public function postSendMail($data = []) 
{ 
    if (! arrayHasValue($data)) $this->error(__METHOD__, "Data is empty."); 

    $request = Curl::to($this->apiUrl.'mail/send')   
     ->withHeader('Authorization: Bearer '. $this->apiKey) 
     ->withData($data) 
     ->asJson(true) 
     ->enableDebug(storage_path('logs/laravel-'.php_sapi_name().'.log')) 
     ->post(); 


    return $request; 
} 

//my instance 
$sendgrid = new Sendgrid; 
    $data = [ 
       'personalizations' => [ 
         [ 
          'to' => [ 
           [ 'email' => '[email protected]' ] 
          ], 
          'subject' => 'Hello, World!' 
         ] 
        ], 
       'from' => [ 
         'email' => '[email protected]', 
         'name' => 'my_site' 
        ], 
       'content' => [ 
         [ 
          'type' => 'text', 
          'value' => 'Hello, World!' 
         ] 
        ], 
       'track_settings' => [ 
         [ 
          'click_tracking' => true, 
          'open_tracking' => true 
         ] 
        ], 
       'attachments' => [ 
         [ 
          'content' => base64_encode(config('global.UPLOAD_PATH') . '/my_file.pdf'), 
          'type' => 'application/pdf', 
          'filename' => 'my_file.pdf', 
          'disposition' => 'attachment' 
         ] 
        ] 
       ]; 

    $lists = $sendgrid->postSendMail($data); 

メールが正常に送信されましたが、私は添付ファイルを表示するとき、それは見ること/できない壊れました。誰でも助けてくれますか? 。:(

助けてください

答えて

2

を問題は、あなたがオブジェクトにファイルを読み取り、そのオブジェクトをコードしていないということです。あなたは、ファイルパスを含む文字列をコードしている

'content' => base64_encode(config('global.UPLOAD_PATH') . '/my_file.pdf') 

。テストであなたの添付ファイルのすべてが結果として、実際のファイルより小さく、おそらく同じ大きさであり、

ような何かしてみてください。

$imagedata = file_get_contents(config('global.UPLOAD_PATH') . '/my_file.pdf'); 
$base64 = base64_encode($imagedata); 
+0

私の質問に忘れました。しかしあなたは正しい。 :) –

関連する問題