Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wygenerowany fpdf jako załącznik w meilu
mlattari
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Witam po długiej przerwie :-))

Jaki sposób sugerujecie na wysyłanie meilem wygenerowanego fpdfa ?
Jak dotąd generowane fpdfy (pliki PDF wygenerowane poprzez klasę fpdf) muszę zapisywać lokalnie i załączać do poczty po stronie klienta ale chciałbym aby po kliknięciu w odpowiedni link serwer wysyłał mi odpowiedniego fpdfa jako załącznik do meila do odpowiedniego odbiorcy.

Bardzo dziękuję z góry za podpowiedzi :-)
Go to the top of the page
+Quote Post
maly_swd
post
Post #2





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


jesli chodzi o wysylanie mail z zalacznikiem to ta klasa jest dobra class.phpmailer.php
http://phpmailer.codeworxtech.com/
Go to the top of the page
+Quote Post
nitek
post
Post #3





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

Ostrzeżenie: (0%)
-----


generujesz fpdfem,
zapisujesz na serwerze w katalogu tymczasowym,
wysyłasz z automatu maila (również polecam PHPmailer) z wygenerowanym pdf jako załącznikiem,
kasujesz z serwera wygenerowany plik.
wszystko dzieje się w jednym skrypcie...

co do bezpieczeństwa, odpowiednie uprawnienia + do generowanych nazw możesz używać jakiegoś random z czasu i md5 z tego + htaccess na katalog tymczasowy.
Go to the top of the page
+Quote Post
erix
post
Post #4





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




A po co?

ob_start" title="Zobacz w manualu PHP" target="_manual, np. phpMailer pozwala załączyć strumień bezpośrednio do maila, bez konieczności zapisu plików. [;
Go to the top of the page
+Quote Post
nitek
post
Post #5





Grupa: Zarejestrowani
Postów: 209
Pomógł: 37
Dołączył: 27.02.2008
Skąd: Kwidzyn

Ostrzeżenie: (0%)
-----


Cytat(erix @ 29.06.2009, 19:14:48 ) *
ob_start" title="Zobacz w manualu PHP" target="_manual, np. phpMailer pozwala załączyć strumień bezpośrednio do maila, bez konieczności zapisu plików. [;

O tym nie pomyślałem. Rozwiązanie ambitniejsze (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) (Czyt. lepsze (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
Go to the top of the page
+Quote Post
mlattari
post
Post #6





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


No ob_start wydaje się być świetnym i bardzo prostym rozwiązaniem. Ale, ponieważ widzę to tylko teoretycznie bo nigdy nie bawiłem się w wysyłanie zawartości bufora jako załącznik poczty, ciekawi mnie jak przerzucić zawartość bufora do załącznika... Erix, czy mógłbyś dać jakiś bardzo prosty przykład? Rozumiem że wygląda to tak:

- ob_start;

- generacja fpdf;

- $zalacznik=ob_get_contents();

- ob_end_clean();

- dodaję załącznik...

/"Content-Disposition: attachment;\n" .
//" filename=\"{$zalacznik}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .

I czy to miało by być aż tak proste? Trochę nie chcę mi się wierzyć :-)))

Czy Ty właśnie to miałeś na myśli z tym ob_start()?
Go to the top of the page
+Quote Post
bim2
post
Post #7





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Hmm, nie wiem jakie nagłówki powinieneś wysłać ale klasa PHPMailer posiada metodę, do której możesz wrzucić strumień danych jako załącznik. I tak, to własnie ~erix miał na myśli z ob_start() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
mlattari
post
Post #8





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


hehehe UDAŁO się! TO JEST TYLKO TAKI TEST ALE DZIAŁA (POD LINUXEM) :-)

  1. <?php
  2. $to = "Michael Lattari <mlattari@filemon.eurosistemi>";
  3.  
  4. $from = "Michael Lattari <mlattari@filemon.eurosistemi>";
  5.  
  6. $subject = "Test";
  7.  
  8. $message = "TEST";
  9.  
  10. // $fileatttype = "application/pdf";
  11.  
  12. $fileatttype = "text/html";
  13.  
  14. // $fileattname = "test.pdf";
  15.  
  16. $fileattname = "test.html";
  17.  
  18. $headers = "From: $from";
  19.  
  20. $semi_rand=md5(time());
  21.  
  22. $mime_boundary="==Multipart_Boundary_x{$semi_rand}x";
  23.  
  24. $headers.="\nMIME-Version: 1.0\n" .
  25.          "Content-Type: multipart/mixed;\n" .
  26.           " boundary=\"{$mime_boundary}\"";
  27.  
  28. $message="This is a multi-part message in MIME format.\n\n" .
  29.         "--{$mime_boundary}\n" .
  30.         "Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
  31.         "Content-Transfer-Encoding: 7bit\n\n" .
  32.         $message . "\n\n";
  33.  
  34. // Załącznik
  35.  
  36.  
  37. echo "
  38.  
  39. <html>
  40.  <body>
  41.   <center>TEST</center>
  42.  </body>
  43. </html>
  44.  
  45. ";
  46.  
  47.  
  48. $data=ob_get_contents();
  49.  
  50.  
  51.  
  52. $message.="--{$mime_boundary}\n" .
  53.          "Content-Type: {$fileatt_type};\n" .
  54.          " name=\"{$fileatt_name}\"\n" .
  55.            "Content-Disposition: attachment;\n" .
  56.            " filename=\"{$fileattname}\"\n" .
  57.            "Content-Transfer-Encoding: 7bit\n\n" .
  58.            $data . "\n\n" .
  59.            "--{$mime_boundary}--\n";
  60.  
  61.  
  62. if ( mail ($to, $subject, $message, $headers ) ) {
  63.  
  64. echo "<p>Wysłaneeee...</p>";
  65.  
  66. }
  67.  
  68. else {
  69.  
  70. echo "<p>Nie udało się</p>";
  71.  
  72. }
  73. ?>


ERIX! DZIĘKI ZA JAK ZWYKLE FACHOWĄ PODPOWIEDŹ !
Go to the top of the page
+Quote Post
bim2
post
Post #9





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 152
Dołączył: 9.04.2006
Skąd: Berlin

Ostrzeżenie: (0%)
-----


Nie musisz tak dużą czcionką pisać, podziekowania dajemy na forum guziczkiem POMÓGŁ znajdującym się przy poście, który tobie pomógł (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

nie musisz nabijać postów, przecież możesz wysłać PW, nie?

~erix
Go to the top of the page
+Quote Post
mlattari
post
Post #10





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Jednak jest jeszcze prostszy sposób w przypadku korzystania z fpdf.... :-)

Przytaczam przykład....

  1. <?php
  2. if ( isset($_GET['email']) && $_GET['email']=='1' ) {
  3.  
  4. $to = "adres@meilowy.odbiorcy";
  5. $from = "adres@nadawcy.meila";
  6. $subject = "Temat";
  7. $message = "
  8.  
  9. tekst wiadomości
  10.  
  11. ";
  12.  
  13. $separator = md5(time());
  14. $eol = PHP_EOL;
  15.  
  16. $filename = "raport.pdf";
  17. $pdfdoc = $mypage->Output("", "S");
  18. $attachment = chunk_split(base64_encode($pdfdoc));
  19.  
  20. $headers = "From: ".$from.$eol;
  21. $headers .= "MIME-Version: 1.0".$eol;
  22. $headers .= "Content-Type: multipart/mixed; boundary=\"".$separator."\"".$eol.$eol;
  23. $headers .= "Content-Transfer-Encoding: 7bit".$eol;
  24. $headers .= "This is a MIME encoded message.".$eol.$eol;
  25.  
  26. $headers .= "--".$separator.$eol;
  27. $headers .= "Content-Type: text/html; charset=\"iso-8859-1\"".$eol;
  28. $headers .= "Content-Transfer-Encoding: 8bit".$eol.$eol;
  29. $headers .= $message.$eol.$eol;
  30.  
  31. $headers .= "--".$separator.$eol;
  32. $headers .= "Content-Type: application/octet-stream; name=\"".$filename."\"".$eol;
  33. $headers .= "Content-Transfer-Encoding: base64".$eol;
  34. $headers .= "Content-Disposition: attachment".$eol.$eol;
  35. $headers .= $attachment.$eol.$eol;
  36. $headers .= "--".$separator."--";
  37.  
  38. mail($to, $subject, "", $headers);
  39.  
  40.  }
  41. ?>


Mam tylko z tym pewien problem a mianowicie po wykonaniu

$pdfdoc = $mypage->Output("", "S") (zrzut zawartości pdf do zmiennej $pdfdoc) ale przed wyświetleniem pliku w przeglądarce poprzez

ponowne wykonanie Output(), czyli

$mypage -> Output()

nie mogę nic dodać do wyświetlanej zawartości pdf np. poprzez Cell()

Czy mógł by mi ktoś poradzić jak to zrobić? Dzięki!

Czy nie da się zmienić zawartości stworzonego PDFa "pomiędzy" kilkakrotnym użyciem metody Output() ?
Go to the top of the page
+Quote Post
skowron-line
post
Post #11





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Cytat
Czy nie da się zmienić zawartości stworzonego PDFa "pomiędzy" kilkakrotnym użyciem metody Output() ?


output konczy działanie klasy fpdf więc nic nie wydrukujesz na pdf po wywołaniu tej metody
Go to the top of the page
+Quote Post
mlattari
post
Post #12





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Cytat(skowron-line @ 30.06.2009, 23:20:11 ) *
output konczy działanie klasy fpdf więc nic nie wydrukujesz na pdf po wywołaniu tej metody


no własnie...

Jak to obejść? :-))) Chyba pozostaje mi tylko sklonowanie obiektu przed użyciem Output()....

Jest inny sposób na to?
Go to the top of the page
+Quote Post
skowron-line
post
Post #13





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


A co ty wogóle chcesz zrobić (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
mlattari
post
Post #14





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


Cytat(skowron-line @ 1.07.2009, 00:12:54 ) *


hehe wrzucam sobie wygenerowany fpdf jako załącznik do meila czyli $zalacznik=$mojdokument->Output("", "S") itd itd (klient dostaje raport o swoich zamówieniach)

a zaraz potem wyświetlam sobie zawartość tego pdf w przeglądarce (jako info dla handlowca o tym co klientowi właśnie wysłał) no i chciałem TYLKO DO wyświetlanego się w przeglądarce pdfa dodać kilka linijek tekstu z informacją dla handlowca o tym, że ten raport został właśnie wysłany :-) ale się nie da :-))

Ale jeżeli nie da się no to w sumie w sumie może to info zostać także dla odbiorcy tylko będę musiał zmienić trochę formę tekstu :-)) Bo chyba to nie będzie takie proste.... :-)
Go to the top of the page
+Quote Post
skowron-line
post
Post #15





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

Ostrzeżenie: (0%)
-----


Musisz 2 razy wygenerować ten plik a jak to będziesz robił to wiadomo instrukcje warunkowe
Go to the top of the page
+Quote Post
mlattari
post
Post #16





Grupa: Zarejestrowani
Postów: 79
Pomógł: 3
Dołączył: 23.12.2008
Skąd: Piaseczno

Ostrzeżenie: (0%)
-----


no chyba to by mi pozostało :-( Myślałem, że jest jakieś obejście :-)
Go to the top of the page
+Quote Post
erix
post
Post #17





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Ech, a nie możesz wygenerować, dać ob_start" title="Zobacz w manualu PHP" target="_manual, potem przez ob_get_flush" title="Zobacz w manualu PHP" target="_manual pobrać i wypluć?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.12.2025 - 14:13