Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wiadomość e-mail
Forum PHP.pl > Forum > PHP
Kamilos
Witam po raz pierwszy na tym forum:) Nie miałem nigdy za wiele do czynienia z php, ale chyba się zaczyna...
Mianowicie dostałem zlecenie na wykonanie szablonu e-mail zawierającego w treści obrazki. Potrafię wysłać e-mail jako stronę html, a wiec obrazki i wszystko wyświetla się tak jakbym chciał - grafika wczytywana jest ze zewnętrznego serwera, a wiec e-maile nie zawierają załączników.

Problem polega na tym, że gdy ktoś wejdzie w e-mail, do akcji wkraczają teksty typu "Obrazki dla tej strony zostały zablokowane. Kliknij tutaj aby je odblokować".
Dopiero po kliknięciu na ten napis, obrazki pojawiają się w treści. Jest tak w róznych klientach pocztowych - z uwzględnieniem Outlooka...


Zauważyłem, że niektóre firmy reklamujące swoje usługi, przysyłają do mnie e-maile, gdzie nie trzeba klikać na żaden napis, bo grafika wyświetla się od razu po włączeniu e-maila. Jak można coś takiego zrobić?

Na pewno, tak jak na każdym innym forum, zaraz ktoś mi napisze "poczytaj clasy PhpMailer", "do tego służy PhpMailer - jest najlepszy" itp.
Niestety nic mi to nie daje. Mam ten PhpMailer na kompie i nie mam zielonego pojęcia, co z tym zrobić. Angielski zam tak sobie, a php, tak jak wspominałem - wcale.

Spostrzegłem, że w e-mailach które od razu wyświetlają grafikę (czyli to do czego dążę) zamiast standardowego
<img src="obrazek.jpg"> jest coś takiego: <img src="cid:2820cc9aaf9e4c4673d92622bd04fbc7">
Pojęcia nie mam skąd te cid'y.

Przeglądając dokumentacje, znalazłem taką komendę:
function AddEmbeddedImage($path, $cid, $name = "", $encoding = "base64",
$type = "application/octet-stream") {

if(!@is_file($path))
{
$this->SetError($this->Lang("file_access") . $path);
return false;
}

$filename = basename($path);
if($name == "")
$name = $filename;

// Append to $attachment array
$cur = count($this->attachment);
$this->attachment[$cur][0] = $path;
$this->attachment[$cur][1] = $filename;
$this->attachment[$cur][2] = $name;
$this->attachment[$cur][3] = $encoding;
$this->attachment[$cur][4] = $type;
$this->attachment[$cur][5] = false; // isStringAttachment
$this->attachment[$cur][6] = "inline";
$this->attachment[$cur][7] = $cid;

return true;
}

[/size]
Domyślam się że to jest rozwiazanie mojego problemu. Ale co z tym zrobić? Gdzie wkleić?
Nie piszcie prosze nic w stylu "dodaj to do klasy i po sprawie" bo nic nie zrozumiem.

Bardzo bym prosił, aby ktoś napisał KROK PO KROKU jak wykonać takiego e-maila. NIGDZIEw necie nie ma tego wyjaśnionego - szukałem już 4 dni, kombinowałem i nic. Piszcie, jak do dziecka:)
Z góry bardzo dziękuję!
athabus
Spróbuj może użyć gotowej klasy, która zajmuje się całą "filozofią" mailowania za Ciebie. Polecam phpMailer. Te cid'y to tzw grafika embedded (jeśli dobrze tłumaczę to zagnieżdżona). Chodzi w skrócie o to aby grafika nie była pobierana z zewnętrznego serwera tylko wysłana razem z mailem.
Tutaj masz mały tutorial: http://phpmailer.worxware.com/index.php?pg=tutorial polecam sekcję "Inline Attachments".

Ręcznie nigdy nie wysyłałem maili bo phpMailer zajmuje się wszystkim szczegółami, o których nie wiem i nie chcę wiedzieć.
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.