Avatar billede IT2011 Nybegynder
08. juni 2011 - 08:51 Der er 20 kommentarer

Undgå mail bliver fanget af spam filter

Hej

Jeg har lavet en mail funktion, som sender mails til mig selv.

Man skal indtaste email mm. og så sende den.

Jeg har prøvet at sende til forskellige mail adresser hotmail gmail og min egen, men alle ender i spamfilter, hvordan undgår jeg det ?
Avatar billede repox Seniormester
08. juni 2011 - 09:07 #1
Ved at skrive nogle ordentlige headers og bruge korrekt encoding.
Avatar billede IT2011 Nybegynder
08. juni 2011 - 09:08 #2
hmm, her er min php kode:

<?
if($_POST['Email'])
    {
    $recipient = "it2011@live.dk";

    $headers = "From: ".$_POST['Navn']."<".$_POST["Email"].">\n";
    $headers .= "X-Mailer: PHP\n"; // mailer
    $headers .= "Content-Type: text/html; charset=iso-8859-1\n"; // Mime type

    $subject = $_POST['Emne'];

    $message = "Kontakt:<br>";
    if($_POST['Navn'])
        $message .= "Navn: ".$_POST['Navn']."<br>";
    if($_POST['Email'])
        $message .= "E: ".$_POST['Email']."<br>";
    if($_POST['TLF'])
        $message .= "T: ".$_POST['TLF']."<br>";
    $message .= "<br>";

    $message .= $_POST['Indhold'];

    mail($recipient, $subject, $message, $headers);
    }
?>
Avatar billede IT2011 Nybegynder
08. juni 2011 - 09:10 #3
Kan det have noget at gøre med hvor jeg sender fra ?

Da det er min egen server som sender det, sender jeg via smtp.smilepost.dk
Avatar billede repox Seniormester
08. juni 2011 - 09:12 #4
Hvorfor smider du en 'Content-Type' header med indholdet 'text/html', når det rent faktisk ikke er angivet at det er HTML mail?
Det er ret sandsynligt at den ryger i spam-filteret fordi der er HTML med i en plain-text mail.

Vil live.dk godt vise den som en HTML mail?
Avatar billede IT2011 Nybegynder
08. juni 2011 - 09:17 #5
ja det bliver vist som html, men kan du fortælle mig hvordan min header så skal se ud ?
Avatar billede repox Seniormester
08. juni 2011 - 09:43 #6
Hvis du gerne vil sende en HTML mail, så alle klienter forstår den skal den først og fremmest vide at det er en MIME e-mail den skal modtage. Derefter kan du fortælle indholdet at det er en blanding af HTML og tekst, men det er sådan set ikke nødvendig - så længe det er gjort klart at det er en MIME mail.

Udover det, står der også i RFC'en at mail headers skal seperares med \r\n og ikke bare \n.

Så mit bud, ville være noget ala dette:
<?
        if($_POST['Email'])
        {
            $recipient = "it2011@live.dk";
           
            $headers = "From: ".$_POST['Navn']."<".$_POST["Email"].">\r\n";
            $headers  = 'MIME-Version: 1.0' . "\r\n"; // Så fortæller vi her at det er en MIME mail
            $headers .= "Content-Type: text/html; charset=iso-8859-1\r\n"; // Mime type
           
            $subject = mb_encode_mimeheader($_POST['Emne'], "ISO-8859-1", "B"); // spamfiltre kan heller ikke lide en dårlig encoding af emnet, så hvis ud har Multibyte String på serveren (som de fleste har) er det her det hurtige fiks

            $message = "Kontakt:<br>";
            if($_POST['Navn'])
                $message .= "Navn: ".$_POST['Navn']."<br>";
               
            if($_POST['Email'])
                $message .= "E: ".$_POST['Email']."<br>";
       
            if($_POST['TLF'])
                $message .= "T: ".$_POST['TLF']."<br>";
           
            $message .= "<br>";

            $message .= $_POST['Indhold'];

            mail($recipient, $subject, $message, $headers);
    }
?>
Avatar billede IT2011 Nybegynder
08. juni 2011 - 10:09 #7
Jamen det virker fint... og lander ikke i spamfilter, men afsender = apache <apache@smilepost.dk>

Fejlen rettes, der mangler et '.' her:
$headers  = 'MIME-Version: 1.0' . "\r\n";

Men efter jeg har rettet denne fejl lander min mail igen i spamfilter.

Så fejlen ligger i afsender adressen eller?
Man skulle jo gerne kunne sætte sin egen email som afsender?
Har det noget at gøre med smtp.smilepost.dk, at afsender emailen helst skal være *@smilepost.dk ??
Avatar billede repox Seniormester
08. juni 2011 - 10:47 #8
Nå, jeg har rendt din mail gennem et test værktøj vi har på arbejdet her - den tester blandt andet Barracudas filter, Outlooks, SpamAssasin, gMails egen, MessageLabs fra Symantec og gode gamle Postini og den stryger lige igennem.

Samtidig er den testet i nogle klienter (både standalone og browser baserede) og den ryger ikke i spamfiltret overhovedet hos nogen af dem.
Testet i:
AOL Mail (Explorer)
Apple Mail 4
Gmail (Explorer)
Hotmail (Explorer)
Lotus Notes 6.5
Lotus Notes 7
Lotus Notes 8
Outlook 2000
Outlook 2002/XP
Outlook 2003
Outlook 2007
Outlook 2010
Thunderbird 2.0
Thunderbird 3.0
Yahoo! Mail (Explorer)

Så jeg er bange for det måske kunne være noget lokalt for dig?
Avatar billede IT2011 Nybegynder
08. juni 2011 - 10:52 #9
det du har testet er det den email jeg sendte til dig eller ?
Avatar billede IT2011 Nybegynder
08. juni 2011 - 10:55 #10
Når du skriver lokalt ved mig, mener du så den server jeg sender fra? (I så fald vil jeg ikke afvise det).
Avatar billede repox Seniormester
08. juni 2011 - 11:18 #11
Det er den mail du sendte ja.
Nej, jeg mener det må være din mailklient der har problemer - ikke din server.
Avatar billede IT2011 Nybegynder
08. juni 2011 - 11:37 #12
jeg bruger min webmail/hotmail it2011@live.dk via internet explorer
Avatar billede repox Seniormester
08. juni 2011 - 11:41 #13
Den går fint igennem hotmail hos os. Den bliver ikke fanget i spam-mappen.
Avatar billede IT2011 Nybegynder
08. juni 2011 - 12:21 #14
har du en hotmail jeg kan prøve at sende direkte til?
Avatar billede IT2011 Nybegynder
08. juni 2011 - 12:25 #15
jeg har lige prøvet at sende til en anden hotmail hvor den også lander i spam mappen!
Avatar billede repox Seniormester
08. juni 2011 - 12:29 #16
Desværre ikke. Du kan prøve noget lidt mere radikalt, men som måske kan være nødvendig i dit tilfælde.

Udskift din mail() linie:
mail($recipient, $subject, $message, $headers);

mail($recipient, $subject, $message, $headers, '-f'.$_POST['Email']);


Men du får en fejl, hvis du har safe_mode sat til.

Sidste alternativ er at anbefale dig at google på scriptet 'phpmailer' som er et fremragende script der måske kan udbedre problematikken for dig.
Avatar billede IT2011 Nybegynder
08. juni 2011 - 12:37 #17
Ingen forskel på ved første forsøg.
Avatar billede IT2011 Nybegynder
08. juni 2011 - 12:45 #18
phpmailer lander også i spam mappen!
Avatar billede IT2011 Nybegynder
08. juni 2011 - 12:46 #19
dog ser det di til at være et fint lille script til at sende mails med og vedhæfte filer...
Avatar billede repox Seniormester
08. juni 2011 - 12:49 #20
Så kan det sagtens have noget at gøre med din server.
phpmailer plejer ikke at give problemer og er som regel også den løsning jeg bruger.

Jeg har desværre ikke flere forslag.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester