ugrás a tartalomhoz

Php mail() probléma

Corneleus · 2019. Nov. 19. (K), 11.38
Sziasztok

Regisztráció, és elfelejtett jelszóhoz kellene HTML emailt küldeni.
A nethely.hu oldalon regisztráltam egy tárhelyet.
Ha Php mail() funkció használatával akarok email küldeni, akkor az alábbi kóddal el is küldi, de ugye igy formázatla a levél.

mail('cimzett##kukac##cimzett.hu', 'TÁRGY', 'ÜZENET', 'From: felado##kukac##nethelynel.hu')
Na most a problémám az, hogy amikor kiegészítem a kódot, hogy html email küldjön, akkor nem küldi el az emailt.
Mi lehet a hiba?

$headers = 'MIME-Version: 1.0' . "\r\n" ; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n" ; 
mail('cimzett##kukac##cimzett.hu', 'TÁRGY', 'ÜZENET', 'From: felado##kukac##nethelynel.hu', $headers)
Amennyiben kiveszem a küldöt, csak az általam regisztrált email címre engedi elküldeni, de oda szépen el is küldi.

$headers = 'MIME-Version: 1.0' . "\r\n" ; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n" ; 
// Email küldés
mail ( $Cimzett, $Targy, $Level, $headers); 
 
1

Általános

vbence · 2019. Nov. 19. (K), 21.07
Nem ismerem aszolgáltatót, csak általános tanácsok:

1) Kérdezd meg a supportot. A szolgáltatók som minden perverz dolgot megtesznek nehogy az IP tartományuk fekete listára kerüljön (néhol speciális headereket kell megadni, sok helyen bizonyos kombinációk tiltva vannak).
2) Saját domainről küldesz? Ha a tárhelyszolgáltató úgy tudja, hogy te vagy abc.hu és te def.hu -ról próbálsz küldeni azt valószínűleg tiltják.
3) Ne használd közvetlenül a mail() függvényt, keress egy jó libet erre, ha egy SMTP-képes libet választasz az használható hibeüzenetekkel (a szerver válasza) tud szolgálni.
2

hibás paraméterek

Pepita · 2019. Nov. 20. (Sze), 15.04
Egyrészt mindegyik jó tanács, amit vbence írt, különösen a 3., pl itt egy elég jó csomag.

A fenti kérdésedre (mi a hiba) a válasz az, hogy ebben a sorban rosszul paraméterezed a mail függvényt:
mail('cimzett##kukac##cimzett.hu', 'TÁRGY', 'ÜZENET', 'From: felado##kukac##nethelynel.hu', $headers)
Egyrészt nincs ";"-vel lezárva a sor, másrészt 2 db header stringet szeretnél átadni, amiből a második (a $headers változó értéke) additional_parameters -ként lesz értelmezve, mert vesszővel elválasztottad, így ez az 5. paraméter..
Egyetlen header stringet kéne összerakni, ami tartalmazza a From-ot is.

Ha pl a PHPMailer-t használnád SMTP-n, akkor valószínűleg kevésbé futnál ilyen hibába, de egy jó csomagot is jól kell tudni használni. :)

És még egy pont, ha már email:

4. Ha HTML emailt küldesz, célszerű megadni alt-(text)message-et is, mert ha a usernek le van tiltva a html megjelenítés, akkor semmit sem fog látni belőle. (Fenti csomag ezt is könnyedén kezeli.)