Avatar billede zuledk Nybegynder
10. december 2012 - 21:41 Der 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;

$emne = "Ordrenr.: ".$ordre_nummer." - ".$navn." - ".$fd."/".$fm."/".$fa." kl. ".$tiden;

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.

Pft.
Avatar billede scootergrisen Nybegynder
10. december 2012 - 22:07 #1
Du kan ikke verificere at emailen kommer frem.

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.
Avatar billede zuledk Nybegynder
10. december 2012 - 23:07 #2
Ok det må jeg prøve. Men det skal siges at jeg har køret samme kode i omtrent 5 år og lige pludselig virker det ikke.
Avatar billede zuledk Nybegynder
10. december 2012 - 23:07 #3
jeg kan teste det i morgen og så skriver jeg tilbage
Avatar billede scootergrisen Nybegynder
10. december 2012 - 23:12 #4
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.
Avatar billede zuledk Nybegynder
11. december 2012 - 10:31 #5
ok det prøver jeg.

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().
Avatar billede zuledk Nybegynder
11. december 2012 - 10:44 #6
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.
Avatar billede zuledk Nybegynder
11. december 2012 - 10:56 #7
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? :/
Avatar billede zuledk Nybegynder
11. december 2012 - 14:53 #8
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.?

Husk en svar tråd scootergrisen.
Avatar billede olebole Juniormester
11. december 2012 - 15:57 #9
<ole>

Generelt er det en ret 'sparsom' mail-kode. Prøv denne kode i stedet  =)

/mvh
</bole>
Avatar billede Asky Forsker
11. december 2012 - 20:01 #10
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.
Avatar billede scootergrisen Nybegynder
11. december 2012 - 20:48 #11
Doh. Ja hvis kunder har modtaget emailen i spam mappen så virker din kode jo fint.

Du kan aldrig bestemme om emailen skal ende i folks spam mappe men du kan da prøve og lave din email om.
Avatar billede olebole Juniormester
11. december 2012 - 21:20 #12
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
Avatar billede zuledk Nybegynder
11. december 2012 - 23:59 #13
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.
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