ZoRaC Skrevet 24. juni 2006 Del Skrevet 24. juni 2006 (endret) Hei! Er plaget med SPAM på mailen min, har en epostkonto som er "catch all", slik all epost til "[email protected]" kommer til den. For å blokkere SPAM bruker jeg å opprette "dummy" epostkontoer for de adressene som SPAMerne sender TIL. I det siste har det kommet en del SPAM og jeg vil gjerne ha listet opp hvilken adresse de har sendt til så jeg slipper å gå inn å sjekke manuelt i fil->egenskaper->detaljer og lete meg frem til "Delivered-To:" på hver enkelt mail. Noen som kan gi meg noen tips til hvor jeg skal starte? Å få koblet opp til serveren med IMAP skal jeg nok klare, men hvordan kan jeg: * Hente ut header på mailer i mappen Inbox.SPAM? * Søke igjennom header og returnere det som står etter "Delivered-To"? Takker for alle ideer! Endret 24. juni 2006 av ZoRaC Lenke til kommentar
ZoRaC Skrevet 24. juni 2006 Forfatter Del Skrevet 24. juni 2006 Dette var lettere enn jeg hadde trodd! Får nå hentet ut header, men hvordan kan jeg få returnert BARE den linjer som starter med "Delivered-To"? Lenke til kommentar
trrunde Skrevet 24. juni 2006 Del Skrevet 24. juni 2006 Kan vi få se koden du brukte ? Lenke til kommentar
ZoRaC Skrevet 25. juni 2006 Forfatter Del Skrevet 25. juni 2006 Klart det: <?php $ServerName = "{mail.domain.com:143/notls}INBOX.SPAM"; // For å koble til med Imap. Det kan være nødvendig med et punktum rett etter INBOX (INBOX.) $brukerNavn = "[email protected]"; //Brukernavn til mailen $passOrd = "secret"; //Passord til mailkontoen <? define("IN_SCRIPT", true); require_once("core.inc.php"); if ($debugging) $time_start = getmicrotime(); //Kobler til mailboksen $mbox = imap_open($ServerName,$brukerNavn,$passOrd) or die("Klarte ikke åpne mail, prøv igjen senere"); // Henter antall meldinger if ($hdr = imap_check($mbox)) { $msgCount = $hdr->Nmsgs; } echo "<b>Antall meldinger totalt: ".$msgCount."</b><br><br>"; //echo "<pre>"; $i = 1; while ($msgCount>$i) { $header = imap_fetchheader($mbox, $i); $array = explode("\r\n", $header); $delivered_array = explode(":", $array[3]); $delivered_to[] = $delivered_array[1]; //echo $header; //echo "<hr>"; ++$i; } unset($array); unset($delivered_array); foreach (array_count_values($delivered_to) as $key => $value) { echo $key . " - " . $value . "<br>"; } ?> Kunne tenkt meg å få de sortert med de adressene som jeg har fått flest mailer til, men var ikke mer enn 15-20 forskjellige denne gangen, så var lett å se selv hvem som var mest "utsatt". Den er heller ikke 100%, siden bare 90-95% av alle mailer har "Delivered-To" på linje 4 i headeren. Lenke til kommentar
Peter Skrevet 27. juni 2006 Del Skrevet 27. juni 2006 preg_match_all('/Delivered-To: (.*)\r\n/mi', $minmail, $matches); print_r($matches); Tror denne burde kunne funke. Lenke til kommentar
ZoRaC Skrevet 28. juni 2006 Forfatter Del Skrevet 28. juni 2006 Her må jeg vel sette $minmail til adressen jeg vil finne? Saken er at jeg ikke vet hvilken adresse jeg forventer å finne Lenke til kommentar
Peter Skrevet 28. juni 2006 Del Skrevet 28. juni 2006 Her må jeg vel sette $minmail til adressen jeg vil finne?Saken er at jeg ikke vet hvilken adresse jeg forventer å finne 6397452[/snapback] nei, $minmail skal være hele mailen, eller dvs. hele strengen du vil søke igjennom.(typisk headeren) Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå