2016-09-09 8 views
0

Ich benutze sendgrid, um E-Mails von meiner App zu senden, alles ist in Ordnung, bis ich versuche, einen Anhang (ein PDF erstellt innerhalb der Seite und gespeichert als Variable) hinzuzufügen.Sendgrid Anhänge - pdf php

Die pdf sendet, wenn ich die Standard PHP-Mail-Funktion jedoch verwende ich diese zu meinen sendgrid Mail hinzufügen möchten, ich den folgenden Code bin mit aber habe kein Glück:

 $sendgrid = new SendGrid('SENDGRID_KEY'); 
     $email = new SendGrid\Email(); 
     $email 
     ->addTo('[email protected]') 
     ->addBcc('[email protected]') 
     ->setFrom('[email protected]') 
     ->setSubject('Example') 
     ->setFiles($pdfdoc) 
     ->setHtml($example_html); 

     $sendgrid->send($email); 
     echo "you just sent a mail! <br>"; 

Ich habe versucht -> setsetFiles() und -> setAttachment() aber keiner scheint zu funktionieren und ich bekomme die folgende Fehlermeldung:

[09-Sep-2016 03:55:19 UTC] PHP Fatal Fehler: Uncaught Ausnahme 'Guzzle \ Common \ Exception \ InvalidArgumentException 'mit Nachricht' Kann% PDF-1.4 nicht öffnen 3 0 obj

hat jemand eine Idee, wie man das macht?

+0

Haben u dieses https://sendgrid.com/docs/Classroom/Build/Add_Content/attachments.html lesen? –

+0

Ich tat tatsächlich, es nicht wirklich zu erklären, wie es abgesehen von der Angabe von Anhängen nicht Best Practice zu tun ist – user1419810

+0

Sie haben nicht erwähnt, welche sendgrid-Version Sie verwenden, jedoch können Sie diesen Link zu überprüfen und vergleichen Sie Ihren Code https: //sendgrid.com/docs/Integrate/Code_Examples/v2_Mail/php.html Dies ist übrigens Version 2. –

Antwort

0
`#Solved with using web api v2 Curl version like this 

$fileName = 'filename.pdf'; 
$image_data = file_get_contents('gs://my-bucket/filename.pdf'); 

#sending part 

$params = array(
'api_user' => $user, 
'api_key' => $pass, 
'x-smtpapi' => json_encode($json_string), 
'to'  => '[email protected]', 
'subject' => 'your subject', 
'html'  => 'testing body', 
'text'  => 'testing body', 
'from'  => '[email protected]', 
'files['.$fileName.']' => $image_data 
); 

$request = $url.'api/mail.send.json';