Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wysyłanie poczty ze zdjęciami ale bez załącznika
Forum PHP.pl > Forum > PHP
marast78
Witam, przeszukałem Forum, ale tak właściwie nie znalazłem dobrej odpowiedzi na moje pytanie.
Korzystając z tutoriala PHPMailer napisałem taki skrypcik, on działa, lecz nie wyswietlają się 'obrazki' POD THUNDERBIRDEM i w WP, działa to w INTERII, ONET i o2, czyli wina jest po stronie klientów pocztowcych, może ktoś wie jak to obejść?
A drugie pytanie to jak przesyłać taką pocztą w ten sposób, żeby nie było załączników a mimo to wyświetlają się 'obrazki' I NIE INTERESUJE MNIE odwoływanie się do serwera zdalnego, bo większość klientów pocztowych wymaga weryfikacji takiego emaila, często dostaję pocztę w której jest grafika, zdjęcia lecz nie ma ich w załacznikach i nie są pobierane ze zdalnego serwera...może ktoś ma jakąś klase lub wie jak to zrobić...
  1. <?php
  2. require("phpmailer/class.phpmailer.php");
  3. $mail = new PHPMailer();
  4.  
  5. $mail->PluginDir = "phpmailer/";
  6. $mail->From = "tutaj_email"; //adres naszego konta
  7. $mail->FromName = "phpMailer tester";//nagłówek From
  8. $mail->Host = "localhost";//adres serwera SMTP
  9. $mail->Mailer = "smtp";
  10. $mail->Username = "nazwa";//nazwa użytkownika
  11. $mail->Password = "";//nasze hasło do konta SMTP
  12. $mail->SMTPAuth = true;
  13. $mail->SetLanguage("pl", "phpmailer/language/");
  14. $mail->IsHTML(true);
  15. $mail->Subject = "Mail testowy";//temat maila
  16. $mail->AddEmbeddedImage("../baner_m1.jpg", "baner1", "baner_m1.jpg", "base64");
  17. $mail->AddEmbeddedImage("../baner_m2.jpg", "baner2", "baner_m2.jpg", "base64");
  18. //$mail->AddAttachment("../baner_m2.jpg", "baner_m2.jpg");
  19.  
  20. // w zmienną $text_body wpisujemy treść maila
  21. $text_body = '<!DOCTYPE html PUBLIC 
  22. "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
  23.  <html xmlns="http://www.w3.org/1999/xhtml">
  24.  <head>
  25.  <meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
  26.  </head>
  27.  <body>';
  28. $text_body .= "Cześć, chyba phpMailer działa nn";
  29. $text_body .= "Na zawsze Twój, n";
  30. $text_body .= "PHPMailer";
  31. $text_body .= 'Embedded Image: <img src="cid:baner1" alt="PHPMailer" /> Here is an image!';
  32. $text_body .= 'Embedded Image: <img src="cid:baner2" alt="PHPMailer" /> Here is an image!';
  33. $text_body .= "</body></html>";
  34.  
  35. $mail->Body = $text_body;
  36. // adresatów dodajemy poprzez metode 'AddAddress'
  37. $mail->AddAddress("adres","Marek");
  38.  
  39. if(!$mail->Send()){
  40. echo "There has been a mail error <br>";
  41. echo $mail->ErrorInfo."<br>";
  42. }
  43. else{
  44. // Clear all addresses and attachments
  45. $mail->ClearAddresses();
  46. $mail->ClearAttachments();
  47. echo "Mail sent <br>";
  48. }
  49. ?>
Fistach
tego raczej nie obejdziesz niestety. Zreszta nie polecam wysylania obrazkow emailem no ale to juz sprawa osobista:)
marast78
no jednak PHPMailer działa ok wygląda na to, że bardziej wymagający klienci pocztowu wymagają podania typu przesyłanego pliku czyli zamiast

  1. <?php
  2. $mail->AddEmbeddedImage("../baner_m1.jpg", "baner1", "baner_m1.jpg", "base64");
  3. ?>


powinno być..i nie ma już załączników a jest grafika...

  1. <?php
  2. $mail->AddEmbeddedImage("../baner_m1.jpg", "baner1", "baner_m1.jpg", "base64","image/jpeg");
  3. ?>


no ja bym chętnie tego tak nie robił...ale klienci mają swoje widzi mi się i im nie wytłumaczysz pewnych spraw..
smarcz
Czy może mi ktoś wyjaśnić co oznacza skrót "CID:" w takim zastosowaniu?

Cytat
<img src="cid:baner1" alt="PHPMailer" />


Potrzebuje wykonać program pocztowy do wysyłania wiadomości wraz z grafiką (ale nie załącznikiem) - nie wiem gdzie szukać? Myślę że to jest rozwiązanie mojego problemu. Ewentualnie co proponujecie?
Dziękuję.
krowal
Jeśli załączysz ten obrazek tak jak w postach powyżej to i tak będzie on widoczny jako załącznik. Jeśli nie chcesz mieć żadnych załączników to grafikę umieść na serwerze a w kodzie HTML emaila umieść po prostu tag <img> z odpowiednim atrybutem src prowadzącym do tego pliku.
melkorm
Cytat
Czy może mi ktoś wyjaśnić co oznacza skrót "CID:" w takim zastosowaniu?


Jest to odwołanie do części treści e-mail'a, który w tym przypadku zawiera w sobie treść obrazka w base64.

Cytat
Jeśli załączysz ten obrazek tak jak w postach powyżej to i tak będzie on widoczny jako załącznik. Jeśli nie chcesz mieć żadnych załączników to grafikę umieść na serwerze a w kodzie HTML emaila umieść po prostu tag <img> z odpowiednim atrybutem src prowadzącym do tego pliku.


A co z pocztą offline? I nie powinien się wyświetlać.

Cytat
tego raczej nie obejdziesz niestety.


Ależ obejdziesz.

Tutaj przykład z użyciem Zend_Mail: (działa na większości skrzynkach (nie testowałem wszystkich) ale co najważniejsze działa na gmail'u i nie trzeba klikać "pokaż obrazki" ani nic wink.gif )
Oczywiście to jest przykład dodania samego obrazka, pominąłem całą resztę :
  1. $mail->setType(Zend_Mime::MULTIPART_RELATED);
  2. $myImage = file_get_contents( dirname(__FILE__).'/../grafika_dod/logo200.jpg' );
  3. $at = $mail->createAttachment($myImage);
  4. $at->type = 'image/jpeg';
  5. $at->disposition = Zend_Mime::DISPOSITION_INLINE;
  6. $at->filename = 'logo.jpg';
  7. $at->id = 'logo';
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.