PHP mail() Gmail hiba
Üdv mindenki!
Segítség reményébe fordulok hozzátok. Egy ajánlót írtam PHP-ban (neve, mail címe, ismerőse mail címe, üzenet). Működik a kód freemail-ra citromail-ra teszteltem. Csupán Gmail-es email címekre nem továbbítja az üzenetet.
Miért van ez, és hogy tudom kiküszöbölni a hibát?
Előre is köszönöm a válaszokat!
■ Segítség reményébe fordulok hozzátok. Egy ajánlót írtam PHP-ban (neve, mail címe, ismerőse mail címe, üzenet). Működik a kód freemail-ra citromail-ra teszteltem. Csupán Gmail-es email címekre nem továbbítja az üzenetet.
Miért van ez, és hogy tudom kiküszöbölni a hibát?
Előre is köszönöm a válaszokat!
Spam?
Először is nézd meg, hogy nem ment-e spam mappába. Ha igen, akkor több dolgot tudsz tenni. Nézd meg, rendben vannak-e a fejléceid (From, To, Subject, stb). Ha nincsenek, akkor az automatice spam mappa. Ezen felül még megnézheted, hogy a küldő szerver nincs-e valamiféle fekete listán, jól van-e felconfolva.
A Gmail nem szokott csak úgy eldobálni leveleket, szal ha megtalálod, akkor másold be a levél fejlécét és akkor tudunk továbbiakat mondani.
hol "tartod"?
Forrás + válasz
//$youremail = "molnarne45##kukac##citromail.hu";
// a mail cím, ahova a levelek menni fognak
$subject = "contact form";
// a levél tárgya
$thankyou = "sikeresmail.html";
// sikeres küldés után ez fog megjelenni a küldőnek
// innentől kezdve már ne módosíts semmit
function check($postArg) { return (IsSet($_POST[$postArg]) && !Empty($_POST[$postArg])); }
if(!check('email')){
?>
Nem adtál meg mail címet, nyomd meg a VISSZA gombot.<br/>
<?php
}elseif(!check('name')){
?>
Nem adtál meg nevet, nyomd meg a VISSZA gombot.<br/>
<?php
}elseif(!check('message')){
?>
Nem írtál be üzenetet, nyomd meg a VISSZA gombot.<br/>
<?php
}else{
$msg = ereg_replace("\\\'", "'", $_POST['message']);
$msg = ereg_replace('\\\"', "\"", $msg);
$message1 = "from: " . $_POST['name'] . "\nemail: " . $_POST['email'] . "\nmessage:\n" . $msg;
mail($_POST['mailto'], $subject, $message1, "From: " . $_POST['email'] . "\r\nReply-to: " . $_POST['email'] . "\r\n");
?>
<meta http-equiv="refresh" content="0; url=<?echo $thankyou;?>"">
<?php
}
?>
Íme a forrás. Internetről találtam, de módosítanom kellet rajta. Lehetséges hogy akkor rontottam el valamit.
Amúgy igaz ingyenes atw-s tárhelyen vagyok. De a többi levélszolgáltatónak elküldi (citromail, freemail), csak a Gmail válogatja ki ezeket. Szóval nem értem ezzel mi lehet a probléma.
csak tipp: a mailban a from
a mailban a from részhez bármilyen email cím bekerülhet, amit a formon megad a user, szerintem azért dobja el, mert a domain (ahonnan a levelet küldöd) nem egyezik a from -ban szereplő mail domainjével.
javítási lehetőség?
Légyszi amúgy használj kódszínezőt,
Nem tudom erős szakmai érvekkel alátámasztani, ez csak "józan paraszti ésszel szerzett tapasztalat":
A túl bonyolult kódot spamként jelölik.
Én úgy oldottam meg, hogy nekiálltam onnan, hogy:
Adott egy űrlap, rajta egy darab textarea, name="tartalom", form action=feldolgoz.php, ami:
Szóval: if-else ciklussal ellenőriztem, hogy létezik-e a $tartalom, és nemegyenlő-e " "-vel..
...
stb... lépésenként bővítettem a fenti kódot..
Nem tudom megindokolni, de összességében azt tapasztaltam, hogy:
1.) A mail függvényben lévő tagoknak változóknak kell lenniük.. tehát a
2.) A kód összetettsége, pár dalab if-else ciklusnál, néhány $_POST['xyz'], és kettő echo (); -nál ne legyen összetettebb, mert az már spam lesz..
Remélem, segítettem, és bocs mindenkitől a szakbarbárkodó megközelítésért, de nekem így eredményre sikerült jutnom az ingyentárhely vs. Gmail szituációban.
Sikerült
$name = $_POST['name'];
$cim = $_POST['email'];
$mailto = $_POST['mailto'];
mail($mailto, $subject, $message1);
Köszönöm a jó tanácsot. Átírtam úgy ahogy mondtad változókkal helyettesítettem és azóta működik megfelelően. Köszönöm még egyszer!
látom már müködik, de itt
http://php.net/manual/en/function.mail.php
example2