10. december 2012 - 21:41Der er
12 kommentarer og 1 løsning
Problemer med Mail() funktion
Hej alle
Jeg har en webshop som kører hjemmekodet php med dibs integration til betaling. Når man har købt en vare ryger man hen på ordrebekræftelses siden. Denne side sender 2 emails. Først en til kunden og derefter en til forretningen.
Jeg har problemer med mailen til kunden. Af mærkelige grunde når mailen aldrig frem, mens mailen til forretningen altid når frem.
Jeg bruger følgende til afsendelse til kunden: $header = "MIME-Version: 1.0" . "\r\n"; $header .= "Content-type: text/html; charset=\"UTF-8\"" . "\r\n"; $header .= "from:".$butikEmail. "\r\n"; $header .= "X-Mailer: PHP / ".phpversion(). "\r\n"; $header .= "\r\n";
// Mail bekræftelse til kunden mail($til, $emne, $besked, $header);
$til er bare sat til kundens email $emne er bare en streng $besked er en lang html streng $header ses herover.
Mailen til butikken ser stort set ens ud: $header = "MIME-Version: 1.0" . "\r\n"; $header .= "Content-type: text/html; charset=\"UTF-8\"" . "\r\n"; $header .= "from:".$email. "\r\n"; $header .= "X-Mailer: PHP / ".phpversion(). "\r\n"; $header .= "\r\n"; $butikken = $butikEmail;
mail($butikken, $emne, $besked_til_butik, $header); (Variablerne $butikken, $emne, $besked_til_butik, $header er meget ens med kundens)
Er der nogen måde jeg kan verificere at mailen når frem eller ligende? Jeg ved at koden virker når jeg kører lokalt med wamp og at intet af det laver php fejl. Jeg er derfor på bar bund.
Jeg har enda skiftet til en anden server for at se om det virkede. Jeg kører nu med web10.dk og har kørt med dem i 6 år.
mail() returner true eller false alt efter om den blev godkendt til afsendelse.
Hvis det virker lokalt men ikke hos web10s webhotel så har du jo fundet fejlen der. Så det kan være fordi web10 begrænsninger dine mnuligheder for at sende emails. Prøv og byt om så emailen til kunden sendes først og derefter til forrenten og se om du så så det omvendte resultat.
Så er det nok fordi de har ændret på noget på webhotellet som opdatereret PHP eller begrænset mulighed for at sende emails som før.
Prøv og slå alle fejlbeskeder til øverst i din PHP kode.
<?php
ini_set("display_startup_errors", "on"); ini_set("display_errors", "on"); ini_set("html_errors", "false"); error_reporting(-1); // -1 viser alle slags fejl beskeder
?>
Hos one.com hvor jeg har webhotel der har de en eller anden grænse med at man maks kan sende 10 emails om dagen eller sådan noget hvis man sender fra en ekstern email adresse.
Kan man afbryde alle INSERT og UPDATE database kald på en smart måde. Jeg tænker at kunne teste om de virker men rent faktisk ikke udføre dem så jeg istedet kan se om der kommer noget ud af mysql_error().
Jeg har lige brugt din fejlhåndtering med ini_set.
Jeg får kun undefined variable fejl frem. Det er ikke noget der får koden til at fejle som så. Det er mest hvor jeg var brugt $var .= 222; Jeg har et par gange glemt at definere variablen uden punktum først.
Underlig nok. Jeg har selvfølgelig brugt min egen gmail til at teste med. Jeg får både kundens og forretningens email fint igennem. Så problemet kan være tilfældige emails? :/
Jeg må konstatere at dem der har meldt tilbage at de ikke har modtaget emailen er kunder hvor mailn er endt i SPAM folderen. Nogle der ved hvad jeg kan gøre ved det? Nogle gode tips evt.?
Jeg har haft problemet omvendt. Kunden fik sin mail med det bestilte, men firmaet fik ingen. Det blev en længere historie, hvor jeg helt måtte ændre afsendelsesproceduren fra formularen. Problemet var restriktioner på serveren pga megen spam. Afsendelsesproceduren blev ændret til en kodning, hvor der blev brugt brugernavn og adgangskode fra den adresse, der skulle modtage firmadelen.
Spamfiltret bruger bl.a. header'en, så prøv #9. Så sikrer du dig også, at mailen kommer frem, selvom der skulle stå noget utf-8 i emnefeltet. Det gør dit nuværende script ikke
Jeg har <oles> link til at lave emailen. Så må vi se om det virker på sigt.
Jeg har desuden kigget på hvad jeg sender med. Min From email adresse havde f.eks ikke samme adresse som webhotellet så jeg har nu lavet en ordre@mail.dk til formålet som blot forwarder til den anden email. Det burde virke bedre mht. spam.
Tak for hjælpen alle.
Synes godt om
Ny brugerNybegynder
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.