2013-07-16 21 views
6

phpmailer kullanarak bir e-posta gönderiyorum. Pdf oluşturmak için web servisim var. Bu pdf, herhangi bir yere yüklenmiyor veya indirilmiyor. E-postama bu dinamik pdf url eklemek gerekir phpmailer pdf'yi dinamik URL'den ekleyin

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

gibi

PDF url'dir.

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

Aşağıda i pdf takmak için kullanıyorum kodudur gibi Benim eposta gönderen hizmet url'dir.

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

Mesaj gönderme çalışıyor ancak pdf eklenmiyor. Aşağıdaki mesajı verir.

dosyayı erişilemedi: PHPMailer olarak

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

Ben

+6

Kendime bir cevap buldum. aşağıda çözümdür. $ string = file_get_contents ("http: //mywebsite/report/sales_invoice.php? company = development & sale_id = 2"); $ mail-> AddStringAttachment ($ string, "sales_invoice.pdf", $ encoding = 'base64', $ type = 'application/pdf'); – Irawana

+0

[PHPMailer AddAttachment uzak dosyası] 'nın olası kopyası (http://stackoverflow.com/questions/16485685/phpmailer-addattachment-remote-file) –

+2

Çözümü bir "Cevapla" dosyasına eklemeniz ve bunun yerine doğru cevabı işaretlemeniz gerekir. Yorum ekleme – RPDeshaies

cevap

6

burada cevap için biraz yardıma ihtiyacım uzak içeriği otomatik olarak getirmez, bunu kendiniz yapmanız gerekir.

Yani gidin:, sunucu yanıt süresine bağlı olarak

senaryonuz zamanlama sorunlarla karşılaşma:

// 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... 

gereken diğer noktalar için dikkat etmek. Ayrıca, getirilen veriler oldukça büyük olabilir ve php'nin bellek ayırmasını aşmasına neden olabilir.

+0

Çok teşekkürler ... Sadece noktalı virgül ekledim ($ url); ve bu mükemmel çalışır. – felixmpa

İlgili konular