Jak sprawdzić status wiadomości e-mail

0

Witam serdecznie drogich użytkowników.

Na wstępie zaznaczę że do końca nie wiem czy wybrałem odpowiedni dział. Jeżeli nie to proszę admina o przeniesienie ;)

Tak więc piszę system mailingowy. Jego główna funkcjonalność to zbieranie adresów e-mail poprzez newsletter (wstawiamy na swoje strony formularze gdzie użytkownik może podać swój adres e-mail i po zaakceptowaniu regulaminu zapisać się na darmowy newsletter). Następny etap to planowanie i wysyłka newslettera. To tak w skrócie.

W tym projekcie dysponuje serwerem dedykowanym (debian) na którym jest postawiłem postfixa + dovecot. Oba działają na mniej więcej defaultowej konfiguracji. Do samej wysyłki maili korzystam z PHPmailer'a. Większość rzeczy mam już skończone został jedynie problem który ciężko mi rozwiązać...

Klient zażyczył sobie aby była możliwość podejrzeć statystyki mailingu czyli ile wiadomości zostało wysłanych, dostarczonych i odczytanych. Jeśli chodzi o same wysłanie wiadomości to nie ma w zasadzie problemu. Przyjmuję że jeśli phpmailer połączył się poprawnie z serwerem SMTP, wysłał wiadomość i zwrócił status status=sent 250 2.0.0 OK, to wszystko jest jak należy i moja wiadomość została wysłana.

Jeśli chodzi o dostarczenie wiadomości to najprościej byłoby podejrzeć logi samego postfix'a, domyślnie w pliku /var/log/mail.log jest taka informacja i zapewne uda mi się ją jakoś stamtąd wydobyć ;) Moje pytanie jednak brzmi czy znacie jakieś narzędzia do sprawdzenia komunikatów DSN? Nie ważne czy byłoby to narzędzie konsolowe, pisane w PHP (może inna biblioteka do wysyłki), czy jakiekolwiek inne...

No i chyba najtrudniejsza kwestia. W jaki sposób mogę sprawdzić czy wiadomość została odczytana przez odbiorcę?

Z góry dziękuję za każdą pomoc.

1

Jeśli chcesz sprawdzić czy użytkownik otworzył wiadomość możesz dodawać do każdej z wiadomości adres do pustego obrazka wielkości 1px/1px. Nazwa takiego obrazka powinna być unikatowa dla każdej wysłanej wiadomości. Następnie, gdy klient poczty spróbuje wczytać obrazek, przy pomocy PHP obsłużysz żądanie i zaznaczysz sobie, że wiadomość z taką nazwą obrazka została przeczytana.
Nie jest to rozwiązanie idealne, ponieważ użytkownik może blokować pobieranie obrazków, jednak wyniki powinny być bardzo zbliżone do faktycznej ilość otwartych maili.

1

z tym sprawdzaniem tego dostarczenia to roznie bywa bo sporo serwerow nie zwraca informacji o dostarczeniu maila (lub zwraca z opoznieneim) zeby zabezpieczyc sie przed spamerskimi praktykami kolekcjonowania maili.

a co do tego jak sprawdzic czy email zostal odczytany?? ano w tresci maila umiesc zapytanie do twojego serwera pod postacia chocby jpg (niewidoczny pusty img src="http://mojwerwr.pl/zapytanie.jpg?mailId=sfas7fysdf9sf"). i nadajac id wiadomosci porownasz ja z ta przechwoana w bazie i bedziesz mial statystyki. tak samo mozesz robic z kliknieciami w linka czy banner, podmienaisz url na wysylanie zadania do swojego serwera, zapisujesz do statystyk a uzytkownika przekierowujesz).

z drugiej strony sadze ze goly phpmailer to za slabe narzedzie doc zegos takiego. lepiej uzyc zewnetrznych serwisow jak mailgun czy amazon aws. One wtedy udostepnia ci API z wszystkimi danymi. dodatkowo jesli maili jest malo to sa darmowe, a jesli duzo to i tak dlugo nie pociagniesz bo gmail/wp i inne serwisy blokna ci serwer w 3 minuty jako niezaufanego dostawcy (bo ufaja tylko duzym jak mailgun czy Amazon)

0

Witajcie ponownie,

Tak więc zrobiłem ten trik z obrazkiem ;) thx @freemp3, działa całkiem nieźle, w zasadzie tylko onet zażądał wyświetlania obrazków i androidowy klient yahoo... na pozostałych skrzynkach test wypadł pozytywnie. Tak więc to rozwiązanie jest chyba do przyjęcia ;)

Pozostaje jeszcze kwestia sprawdzenia czy serwer dostarczył pocztę:
sporo serwerow nie zwraca informacji o dostarczeniu maila (lub zwraca z opoznieneim)
Czy ktoś wie jak jest to zaimplementowane w systemach takich jak freshmail?

0

w zasadzie tylko onet zażądał wyświetlania obrazków i androidowy klient yahoo

99% nowych (starych w sumie też) klientów poczty będzie tego wymagać, niektóre pominą to pytanie jak masz nadawcę na białej liście, albo po prostu w kontaktach. chyba ostatnio na Windows 98 widziałem klienta BEZ takiego pytania

1

Niestety tak jak napisał @dzek69 teraz prawie każdy klient pocztowy pyta przed pobraniem obrazków.
Co do sprawdzania ile wiadomości zostało dostarczonych możesz napisać skrypt, który co kilka minut, będzie logował się na konto, z którego są wysyłane wiadomości i sprawdzał czy przyszła jakaś zwrotka z błędem. Jeśli coś przyszło sprawdzasz jakiego adresu dotyczy i dodajesz do ilości wysyłek, które nie zostały dostarczone.

1 użytkowników online, w tym zalogowanych: 0, gości: 1