2013-07-16 7 views
6

Ich sende eine E-Mail mit phpmailer. Ich habe Webservice, um pdf zu erzeugen. Dieses PDF wird nicht überall hochgeladen oder heruntergeladen.phpmailer PDF an die dynamische URL anhängen

PDF url ist wie

http://mywebsite/webservices/report/sales_invoice.php?company=development&sale_id=2 

ich diesen dynamische pdf URL per E-Mail anhängen müssen. Meine E-Mail zu senden url Service ist wie

http://mywebsite/webservices/mailservices/sales_email.php 

Im Folgenden ist der Code, den ich die PDF-Datei anhängen verwende.

$pdf_url = "../report/sales_invoice.php?company=development&sale_id=2"; 
$mail->AddAttachment($pdf_url); 

Senden der Nachricht funktioniert, aber pdf nicht angehängt. Es gibt unten Nachricht.

Datei konnte nicht zugreifen: ../report/sales_invoice.php?company=development & sale_id = 2

Ich brauche Hilfe

+6

Ich fand Antwort selbst. Unten ist die Lösung. $ string = file_get_contents ("http: //meinewebsite/report/sales_invoice.php? company = entwicklung & verkauf_id = 2"); $ mail-> AddStringAttachment ($ zeichenfolge, "sales_invoice.pdf", $ encoding = 'base64', $ type = 'application/pdf'); – Irawana

+0

mögliches Duplikat von [PHPMailer AddAttachment Remote-Datei] (http://stackoverflow.com/questions/16485685/phpmailer-addattattment-remote-file) –

+2

Sie sollten die Lösung in einer "Antwort" hinzufügen und markierte stattdessen die richtige Antwort einen Kommentar hinzufügen! – RPDeshaies

Antwort

6

die Antwort zu haben, hier:

Als phpmailer Wenn Sie den Remote-Inhalt nicht automatisch abrufen möchten, müssen Sie dies selbst tun.

So gehen Sie:

// we can use file_get_contents to fetch binary data from a remote location 
$url = 'http://mywebsite/webservices/report/sales_invoice.php?company=development&sale_id=2'; 
$binary_content = file_get_contents($url); 

// You should perform a check to see if the content 
// was actually fetched. Use the === (strict) operator to 
// check $binary_content for false. 
if ($binary_content === false) { 
    throw new Exception("Could not fetch remote content from: '$url'"); 
} 

// $mail must have been created 
$mail->AddStringAttachment($binary_content, "sales_invoice.pdf", $encoding = 'base64', $type = 'application/pdf'); 

// continue building your mail object... 

Einige andere Dinge zu achten:

Je nach Antwortzeit des Servers, kann Ihr Skript in Timing-Probleme laufen. Außerdem können die abgerufenen Daten ziemlich groß sein und dazu führen, dass php seine Speicherzuweisung überschreitet.

+0

Sehr danke ... Ich habe nur Semikolon nach ($ url); und das funktioniert perfekt. – felixmpa