ugrás a tartalomhoz

php mail fuggveny

nemalevi · 2008. Okt. 10. (P), 21.16
Sziasztok!

A mail fuggveny hasznalataval kapcsolatban szeretnek tanacsokat kerni. Olvasgattam a forumtemak kozul es latom masnak is okozott mar problemat a dolog, de talan itt kapok valami ertelmes valaszt is.
A kodot nem irnam be, mert kiprobaltam tobbfele formaban es nagyjabol mindenhol ugyanazokat a hibakat tapasztaltam.
- a google mail altalaban mukodik, de a cimet tagoltan irja be a
felado mezobe: emailcim @ extra. hu
- a yahoo egybol spamba teszi az uzenetet
- a freemail az uzenet utan kiirja, h
UNEXPECTED_DATA_AFTER_ADDRESS@.SYNTAX-ERROR.
Az lenne meg a kerdesem h letezik valami jo modszer arra h megbizonyosodjunk arrol h az uzenet valoban megerkezett-e a megadott helyre?
 
1

SwiftMailer

janoszen · 2008. Okt. 10. (P), 23.27
Az lenne a javaslatom, hogy próbálkozz meg a swiftmailer használatával. A levelezés nem egy egyszerű téma és ahogy egyre több spam-védelmi eszközt vonultatnak fel a szolgáltatók, egyre kevésbé lesz triviális olyan levelet előállítani, ami megfelel a formai követelményeknek.

Ha meg szeretnéd tanulni, akkor lesz egy jó pár óra kellemes (angol nyelvű) olvasmányod a levelezés működéséről. Mindenképpen hasznos csak nem biztos hogy időszerű Neked.
2

Nem ördöngösség

Ronyn · 2008. Okt. 10. (P), 23.43
Mindenesetre a kódot talán mégis be irhatnád,mivel a freemail szintaktikai hibát jelez,(vagyis hibás a kód), és hiába a többféle forma ,ha mindig ugyanazt a hibát követed el...
Vagy pedig a fentebb emlitett SwiftMailer ill. PhpMailer; utóbbi inkább csak "puskázásra",arra jó ,hogy tanulj és összerakj belőle egy működő kódot...
Ha mellékletet is akarsz küldeni (vagy altbody-t),akkor pláne nem árt kis "puskázás"...
3

A tobbfele kodot ugy ertettem...

nemalevi · 2008. Okt. 11. (Szo), 00.31
...hogy kiprobaltam tobb masok altal megirt kodot
amiket varialgattam.
Ez a legutobbi

$sender = "sender";
	$reply = "sender##kukac##extra.hu";
	$body = '<html><head>';
	$body .= '<style type="text/css">';
	$body .= 'b {color: #3399FF;}';
	$body .= '</style></head>';
	$body .= '<body>';
	$body .= '<p>text</p>';
	$body .= '</body>';
	$body .= '</html>';
	$receiver = $_POST["mail"];
	$subject = "Regisztráció";
		$header = "From: $sender\r\n";
		$header .= "X-Sender: $sender\r\n";
		$header .= "Reply-To: $reply\r\nReturn-Path: $reply\r\n";
		$header .= "Reply-To: $sender\r\nReturn-Path: $sender\r\n";
	    $header .= "MIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\n";
	    $header .= "X-Mailer: PHP/" . phpversion() . "\r\n";
	if(@mail($receiver, $subject, $body, $header)) { 
	$message = "<h2 class='messages'>Sikeres regisztráció! <br />A jelszót elküldtük a megadott címre emlékeztetõül.</h2>"; 
	} else { $message = "<h2 class='messages'>Sikeres regisztráció!</h2>"; }
4

De szép.. :)

janoszen · 2008. Okt. 11. (Szo), 10.44
Na ez pontosan az, amiért nem tessék swiftmailert használni. A $_POST['mail']-ben pl mindenféle rondaságok lehetnek.

Egyébként kérdés: miért van kétszer reply-to és return-path? Főleg hogy a $sender-ben nincs is érvényes e-mail cím? Én úgy érzem, hogy nem érted a kód logikáját. Jól sejtem? Ész nélkül próbálkozás helyett inkább próbáld meg megérteni, hogy hogy működik a levelezés és a fejlécek mit csinálnak, sokkal nagyobb az esélyed a sikerre.
5

Az altalam szerkesztgetett

nemalevi · 2008. Okt. 11. (Szo), 15.36
Az altalam szerkesztgetett kodban nem arvalkodott igy egymagaban a $_POST['mail'].
Ezt a verziot talaltam valahol es mivel hogy ismereteim nem olyan szeleskoruek mint a TIED, ezert fordulhatott elo az h egyes dolgok, mint pl a return-path meg kodosek szamomra.
A $sender-t csak az itteni publikalas miatt javitottam at, de jeeee a $body-ban sincs szoveg!
Az esz nelkuli probalkozasban meg reszben igazad van, de ha en is igy gondolnam, akkor csak ulnek a konyv elott es par ev mulva amikor tokeletesen tisztaba lennek minden altalam szuksegesnek velt dologgal, akkor gep ele ulnek es leirnam az elso kodot.
Egyebkent kosz az epito kritikat.
8

Építő volt

janoszen · 2008. Okt. 13. (H), 08.23
Lehet, hogy kicsit nyers hangú volt, de építőnek szántam. Arra akartam célozni, hogy a SMTP RFC végigolvasása nem olyan vészesen sok idő (kb fél óra) és sok fájdalomtól kímélheted meg magad, lásd a fenti kódban levő hibákat is megtalálhattad volna. Nekem a fenti kód úgy néz ki, mint egy netről lehúzott és áthackelt kóddarabka.

Egyéb iránt, ha nincs időd könyv előtt ülni és megtanulni, hogy mi hogy működik, akkor használj kész dolgokat, (ld a sokat emlegetett *mailer szoftverek). Ha pedig magad akarod megcsinálni, akkor nem tudod megkerülni a könyvek bújását.
6

Lenyeg a lenyeg

nemalevi · 2008. Okt. 11. (Szo), 19.01
Koszonom szepen a valaszokat.
Proclub: - Mindenkeppen fogom tanulmanyozni a levelezest.
Addig is kimasoltam a w3schools oldalarol az ott megjelent mail fuggvennyel kapcsolatos sorokat:

<?php
$to = "receiver1##kukac##gmail.com, receiver2##kukac##freemail.hu, receiver3##kukac##yahoo.co.uk";
$subject = "HTML email";
$message = "
<html>
<head>
<title>HTML email</title>
</head>
<body>
<p>This email contains HTML Tags!</p>
<table>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
</tr>
</table>
</body>
</html>
";
// Always set content-type when sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";
// More headers
$headers .= 'From: <webmaster##kukac##example.com>' . "\r\n";
$headers .= 'Cc: myboss##kukac##example.com' . "\r\n";
mail($to,$subject,$message,$headers);
?>
Ugyanazok a hibak jottek elo, azzal a kulonbseggel, hogy a yahoo-ra meg sem erkezett a level.
Szoval, levontam a kovetkeztetest: a mail fuggveny onmagaban semmit nem er, de mondjuk ezt eddig is gondoltam.
A syntax error-t a freemailban szerintem nem a kod okozza, mert ebben a formaban is jelentkezzett a hiba. Szerintem az extra beallitasa miatt van.
Annak meg majd utana nezek h lehet olyan figyelmeztetest kapni, h nem erkezett meg a level.
9

Nyers példa

janoszen · 2008. Okt. 13. (H), 08.28
A bemásolt kód semmi más mint egy nyers példa. Annyira nyers, hogy se védelmet, sem egyéb szükséges dolgokat nem tartalmaz. A kedvemért próbáld meg a Swiftmailert, ha nem szeretnél belemélyedni a levélküldés rejtelmeibe.

Ami az Extrát illeti, küldd el nekem privátban a kódot, beleszerkesztve a mailcímeket, amikkel tesztelni szeretnél, lefuttatom neked. Nem lennék meglepve, ha ugyanaz lenne az eredmény.

Még egy figyelmeztetés: a mértéktelenül megszaporodott spam miatt olyan szűrési eljárások születtek, amiket pusztán PHP-ból nem tudsz megoldani, hanem egy jól felkonfigurált SMTP is kellhet hozzá (Domain Keys, Sender Policy Framework, stb.). Amennyire az Extrát ismerem, valószínűleg meg van oldva, de az ördög sosem alszik.
7

Hozzáértés nélkül...

Ronyn · 2008. Okt. 11. (Szo), 21.21
Szoval, levontam a kovetkeztetest: a mail fuggveny onmagaban semmit nem er, de mondjuk ezt eddig is gondoltam.

Hozzáértés nélkül, valóban nehezen fog menni...
Én továbbra is javaslom a xxMailer böngészését...
Annak meg majd utana nezek h lehet olyan figyelmeztetest kapni, h nem erkezett meg a level.

Ha nem érkezik meg, akkor a cimzettől sehogy))), viszont jó esetben kapsz egy csunya levelet egy Mailer_daemon nevü "pasitól")))

De például az \r\n sorlezárást sem kell szentirásnak venni(bárha ugy van az RFC-ben),de nálam sokszor az okozott hibát...
Pl.: próbáld ki \n sorvéggel is...