14. januar 2006 - 14:52Der er
8 kommentarer og 1 løsning
problem med mail()
Hejsa
Jeg har et domain hvor der ret ofte skal sendes en mail til brugeren. Til dette bruger jeg mail()
det har nu også altid virket ok, men jeg kan se at det nu sker meget ofte at brugeren IKKE modtager sin mail, hvilket er rimelig problematisk, da det er vigtige oplysninger der står skrevet i disse mails.
mit gæt er at diverse mail servere ude i byen sorterer disse mails fra i spam filteret eller lig.n fordi visse kriterier ikke opfyldes ?
i så fald, hvad kan jeg gøre for at optimere dette ???
jeg sender den blot med modtager, afsender, replay to, og message...
Jeg har fået samme problem. Jeg har prøvet at tjekke mail's ved denne funktion:
/* ** Function: verifyEmail ** Input: STRING address, REFERENCE error ** Output: BOOLEAN ** Description: Attempts to verify an email address by ** contacting a mail exchanger. Registered mail ** exchangers are requested from the domain controler first, ** then the exact domain itself. The error argument will ** contain relevant text if the address could not be ** verified. */
function verifyEmail($address, &$error) { global $SERVER_NAME;
list($user, $domain) = split("@", $address, 2);
//make sure the domain has a mail exchanger if(checkdnsrr($domain, "MX")) { //get mail exchanger records if(!getmxrr($domain, $mxhost, $mxweight)) { $error = "Could not retrieve mail exchangers!<BR>\n"; return(FALSE); } } else { //if no mail exchanger, maybe the host itself //will accept mail $mxhost[] = $domain; $mxweight[] = 1; }
//loop over each host foreach($weighted_host as $host) { //connect to host on SMTP port if(!($fp = fsockopen($host, 25))) { //couldn't connect to this host, but //the next might work continue; }
/* ** skip over 220 messages ** give up if no response for 10 seconds */ set_socket_blocking($fp, FALSE);
$stopTime = time() + 10; $gotResponse = FALSE;
while(TRUE) { //try to get a line from mail server $line = fgets($fp, 1024);
if(substr($line, 0, 3) != "250") { //mail server doesn't recognize //this address, so it must be bad $error = $line; return(FALSE); } else { //address recognized return(TRUE); } }
$error = "Unable to reach a mail exchanger!"; return(FALSE); }
Og får denne fejl: Error: Unable to reach a mail exchanger!
Jeg har prøvet at ændre på tegn osv i subject. Men det ændrer intet. jeg kan godt sende mails fra samme mailadresse fra outlook, og vi et webmail script.
Jeg ved ikke om denne information, gør at nogen kan gennemskue problemet ?
Nej det er egne servere... jeg tror dog også jeg har fundet fejlen... problemet var egentlig ikke mine headers, men at serveren ikke udsendte korrekte oplysninger... jeg har i hvert faldet fået det til at virke de steder jeg har testet det på.
Jeg havde sat en postfix op til kun at tage sig af afsendelsen af mails fra php via sendmail patch denne server sendte ikke et korrekt domain ud og derfor blev mails afvist hos bla. jubii.dk og mange webhoteller.
hmm det kunne være at jeg skulle lukke... poblemet er som sagt løst.
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.