Witam serdecznie,
Korzystam z domyślnej konfiguracji postfixa i dovecota. W jaki sposób mogę sprawdzić status wiadomości. Czy są jakieś narzędzia do zweryfikowania czy mail został dostarczony jeśli posiadam np. Message-ID lub queued?
Z góry dziękuje za odpowiedź
Jak sprawdzic czy POSTFIX dostarczy
No właśnie, interesuje mnie jak można pobrać taki status doręczenia... jak to wygląda od strony serwera. Piszę właśnie system CRM i jedną z jego funkcji jest mailing. Chce stworzyć możliwość podglądu statusu wiadomości. Interesuje mnie jak sprawdzić czy serwer wysłał wiadomość (to akurat nie jest problem status=sent 250 2.0.0 OK), czy wiadomość została odebrana, i czy została przeczytana.
Jak mogę to osiągnąć?
Jak mogę to osiągnąć?
Od strony serwera przynajmniej ja nic nie konfigurowałem. Wszystko załatwia klient pocztowy (thunderbird,outlook,roundcube).
Zauważyłem natomiast, iż jeśli klient nie obsługuje takiej funkcjonalności np (webmail onetu) to nawet jeśli wyślesz wiadomość z potwierdzeniem odbioru np z tundebirda to nic Ci to nie da. Czyli wygląda na to że to działa jakby na poziomie aplikacji klienckiej. Oczywiście mogę się mylić.
Roundcube jest na php, więc może coś z niego wyczaisz analizując kod.
Dodane
Chociaż tu masz coś o tym:http://www.sendmail.org/~ca/email/dsn.html
Wychodzi na to, iż klient daje dodatkowe dyspozycje serwerowi odnośnie potwierdzenia.
Zauważyłem natomiast, iż jeśli klient nie obsługuje takiej funkcjonalności np (webmail onetu) to nawet jeśli wyślesz wiadomość z potwierdzeniem odbioru np z tundebirda to nic Ci to nie da. Czyli wygląda na to że to działa jakby na poziomie aplikacji klienckiej. Oczywiście mogę się mylić.
Roundcube jest na php, więc może coś z niego wyczaisz analizując kod.
Dodane
Chociaż tu masz coś o tym:http://www.sendmail.org/~ca/email/dsn.html
Wychodzi na to, iż klient daje dodatkowe dyspozycje serwerowi odnośnie potwierdzenia.
Witam ponownie (już po odzyskaniu swojego konta),
Udało mi się rozwiązać część mojego problemu Nie wiem na ile jest to dobre rozwiązanie ale w 80% powinno zdawać egzamin... nic innego nie udało mi się wymyślić...
Tak więc fakt czy wysłany przez nas mail został przeczytany możemy sprawdzić w załączając do treści wiadomości obrazek 1px/1px generowany przez skrypt php. Zakładając że obrazek posiada unikalny identyfikator, próbę jego pobrania możemy wykorzystać do zapisania odpowiednich informacji w bazie. Musimy również stworzyć odpowiedni wpis w mod_rewrite. U mnie wygląda to mniej więcej tak:
1. Mod rewrite:
2. Obrazek generowany przez php (checking_img.php):
3. Do wiadomości wstawiamy obrazek:
To tak w dużym uproszczeniu. Oczywiście nie jest to rozwiązanie idealne bo wystarczy aby user miał wyłączone wyświetlanie obrazków, no ale jednak...
Tak więc teraz pozostaje mi wydobycie komunikatów DSN postfixa. Problemem jest jednak to że sporo serwerow nie zwraca informacji o dostarczeniu maila (lub zwraca z opóźnieniem). Czy ktoś wie jak to może być zaimplementowane w systemach mailingowych np. freshmail?
Udało mi się rozwiązać część mojego problemu Nie wiem na ile jest to dobre rozwiązanie ale w 80% powinno zdawać egzamin... nic innego nie udało mi się wymyślić...
Tak więc fakt czy wysłany przez nas mail został przeczytany możemy sprawdzić w załączając do treści wiadomości obrazek 1px/1px generowany przez skrypt php. Zakładając że obrazek posiada unikalny identyfikator, próbę jego pobrania możemy wykorzystać do zapisania odpowiednich informacji w bazie. Musimy również stworzyć odpowiedni wpis w mod_rewrite. U mnie wygląda to mniej więcej tak:
1. Mod rewrite:
Kod: Zaznacz cały
RewriteEngine On
RewriteRule ^logo-(.+).png$ checking_img.php?id=$1 [L]
Kod: Zaznacz cały
<?php
$id_mail = $_GET['id'];
//ini_set("display_errors", 0);
error_reporting(0);
// NASZ KOD PHP DO ZAPISANIA DANYCH W BAZIE - U MNIE WYGLĄDA TO TAK
//require_once('../controller/mailing_db.php');
//ob_clean();
//$mailing_db = new Mailing_db_class;
//$id_mail = intval($_GET['id']);
//$mailing_db->polaczenie->query("update tasks_bufor set tasks_bufor.read = 1, tasks_bufor.delivered = 1, tasks_bufor.sent = 1 where read_check = $id_mail");
header ('Content-Type: image/png');
$ob = ImageCreate(1,1);
$white = imagecolorallocate($ob, 255, 255, 255);
imagefill($ob, 0, 0, $white);
imagepng($ob);
imagedestroy($ob);
?>
Kod: Zaznacz cały
<img src="http://domena.pl/logo-[nasz-unikalny-id].png" alt="logo">
Tak więc teraz pozostaje mi wydobycie komunikatów DSN postfixa. Problemem jest jednak to że sporo serwerow nie zwraca informacji o dostarczeniu maila (lub zwraca z opóźnieniem). Czy ktoś wie jak to może być zaimplementowane w systemach mailingowych np. freshmail?