- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- lezso6: Nem látszik a kurzor Chrome alatt a beviteli mezőkben?
- Lalikiraly: SÜNI energiaital.
- user2: Kia Ceed Gold 160 1.5 T-GDI MY2024
- sziku69: Fűzzük össze a szavakat :)
- Elektromos rásegítésű kerékpárok
- Gurulunk, WAZE?!
- eBay-es kütyük kis pénzért
- bambano: Bambanő háza tája
Új hozzászólás Aktív témák
-
Sk8erPeter
nagyúr
válasz
lesaux #15649 üzenetére
Na várjál, mielőtt anyáznál a tárhelyszolgáltatódnál, azért előtte próbálkozz kicsit, vagy írd körül nekünk jobban a helyzetet, mert úgy tűnik, nem vágod az elérési utak mikéntjét.
"A mostaninál három darab /../ is van, ami mondjuk eleve gyanús, de hát egyszer vissza kell lépnem a public_html mappából, utána a domainnevemet leíró mappából, majd a domains nevűből, és ott figyel egy .php mappa, amiben 5 db php-mail.log fájl sorakozik, de mind 0 bájt hosszú."
Heh?
Most hogy jönnek ide a logfájlok? Te a phpmailer könyvtárban lévő class.phpmailer.php fájlt szeretnéd elérni, ennek kell a megfelelő elérési útja.Na, tehát hogy is van ez nálad?
Van a public_html könyvtárad, gondolom ebben van valahol a phpmailer könyvtár, nem eggyel vissza a public_html-től, na de kérdés, hogy konkrétan a public_html-en belül melyik könyvtárban van. Vagy ömlesztve van a public_html-be? Vagy hogyan?
Írd körül a könyvtárstruktúrát légyszi, és akkor szerintem a szolgáltató bevonása nélkül is meg tudjuk oldani a problémát. Persze az jó, ha ők is gyorsan válaszolnak. -
Sk8erPeter
nagyúr
Nincs mit. És végül melyik megoldást választottad?
PHPMailer vagy egyéb?Hogy érted, hogy nincsenek ékezetek? Krikszkrakszokat rak be helyette? A karakterkódolásnak stimmelnie kell, tehát a dokumentumnak, amiből küldöd, szintén UTF-8-nak kell lennie, ha a levelezőrendszert is arra állítottad. Vagy fordítva, a levelezőrendszert "hangold" a másik karakterkódolásra.
-
cucka
addikt
De nem gáz ez, hogy ott van kódolatlanul?
Igen, gáz, ugyanakkor nem azA php file-t kívülről nem lehet elérni, mert a webszerver tudja, hogy az egy php file, így nem a php programkódot fogja visszaadni a felhasználónak, hanem lefuttatja php-val, és amit az kiír a standard kimenetre, na az megy a júzernek. Tehát nem gáz, hogy ott van kódolatlanul, valószínűleg egy másik file-ban az adatbázis jelszavad is ott lesz kódolatlanul
Annyiban gáz, hogy ha valaki hozzáfér a honlaphoz tartozó file-okhoz (pl. valahogy megszerzi az ftp jelszavadat), akkor látni fogja a jelszót is, bár ez esetben úgyis megette a fene az egészet, tehát szerintem ezen ne parázz
-
Sk8erPeter
nagyúr
Fentebb van az e-mail-küldésre használható függvény, amit írtam neked.
Abban van az alábbi rész kikommentezve, ott szedd ki a kommentet (a /* nyitó és */ záró részt), majd az if(IS_LOCALHOST){ sort is, meg ennek a blokknak a záró kapcsos zárójelét ( } ), és hagyd bent az alábbi részt, úgy, hogy a megfelelő helyekre a saját adataidat írod (SMTP_HOST, SMTP_USER, SMTP_PASS konstansokat cseréld le a sajátodra):
//küldjük SMTP-vel
$mail->Mailer = 'smtp';
$mail->SMTPAuth = 'true';
$mail->Host = SMTP_HOST;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASS; -
cucka
addikt
Az mx rekord a lanten.hu-hoz létezik, ezt sok helyen meg tudod nézni, pl. [link]
Phpmailer-el pedig tudsz küldeni simán (php mail-el) és smtp-vel is levelet. Az smtp-s levélküldésnél pontosan ugyanúgy be fog lépni az smtp szerverre a phpmailer, mint ahogy egy átlag levelezőprogram belép, amikor küldesz vele valamit. Ha megnézed a phpmailer kódját, a "PROPERTIES FOR SMTP "-re keress rá, ott lesz szépen dokumentálva az összes paraméter, amit az smtp-s levélküldéshez be lehet állítani. (Nem mindegyiket kell piszkálni, de nyilván hostnév vagy belépési adatok nélkül nem fog semmit küldeni sehova
)
-
Sk8erPeter
nagyúr
Próbáld ki akkor a PHPMailerrel, töltsd le, majd másold a megfelelő helyre, amit majd beállítasz a $phpmailer_path változóban. Tehát ezt változtasd meg annak a helyére, ahova pakolod a fájlt!
Aztán másold be az alábbi függvényt annak a fájlnak az elejére, ahol a levélküldést szeretnéd csinálni (egy részt kikommenteztem benne, ami neked most valszeg nem kell, meg nálam definiálva van egy-két konstans egy konfigfájlban, de bennehagytam, hátha mégis szükség lesz SMTP-küldésre később). Függvénybe tettem, hogy ne kelljen mindenhol külön megírni:
/**
* send_email() - E-mail küldése (localhoston SMTP-vel)
* Kivétel: phpmailerException() levélküldési hiba esetén
* Exception(), ha nem létezik a fájl vagy nem elérhető
*
* @param string $to
* @param string $toName
* @param string $from
* @param string $fromName
* @param string $subject
* @param string $message
* @return none
*/
function send_email( $to, $toName, $from, $fromName, $subject, $message ) {
$phpmailer_path = $_SERVER['DOCUMENT_ROOT'].'/PHP/classes/class.phpmailer.php';
if(!file_exists($phpmailer_path)){
throw new Exception('Nem elérhető a PHPMailer osztály!');
}
//PHPMailer osztályt include-oljuk
require_once($phpmailer_path);
// példányosítjuk a PHPMailer osztályt, és jelezzük, hogy szeretnénk,
// ha kivételeket dobna (ne írja ki egyből a képernyőre a hibaüzeneteket)
$mail=new PHPMailer( true );
// karakterkészlet
$mail->CharSet = 'utf-8';
// feladó címe
$mail->From = $from;
// feladó neve
$mail->FromName = $fromName;
// címzett; címzett neve
$mail->AddAddress( $to, $toName );
// tárgy
$mail->Subject= $subject;
// levéltörzs
$basedir = $_SERVER['DOCUMENT_ROOT']; //pl. esetleges csatolandó képek miatt (így stimmel az elérési út)
$mail->MsgHTML($message, $basedir);
/*
//csak saját gépen küldjük SMTP-vel
if(IS_LOCALHOST){
$mail->Mailer = 'smtp';
$mail->SMTPAuth = 'true';
$mail->Host = SMTP_HOST;
$mail->Username = SMTP_USER;
$mail->Password = SMTP_PASS;
}
*/
// a levél elküldése
$mail->Send();
}Majd amikor magát a levélküldést szeretnéd végrehajtani, a sima mail() függvényed és a mostaniak HELYETT ezt tedd be:
$to = 'le****@vipmail.hu';
$toName = 'lesaux';
$from = 'nemtom@lepesfalvi.hu';
$fromName = 'Valaki János';
$subject = 'Új látogató érkezett';
$host = gethostbyaddr($_SERVER["REMOTE_ADDR"]);
$visitor_IP = $_SERVER['REMOTE_ADDR'];
$message = "Új vendég nyitotta meg az oldalt!\nIP-je: $visitor_IP\nHostja: $host";
// a levél elküldése
try { //kivétel, ha nem sikerült az elküldés...
send_email( $to, $toName, $from, $fromName, $subject, nl2br($message) );
} catch (Exception $e) {
echo ' Hiba a levélküldés során (log_errors()): '.$e->getMessage();
}Persze a hibaüzenetet nem muszáj echo-zni, ha naplózol, de azt már rádbízom.
Remélem így már működni fog! Ne felejtsd el a $phpmailer_path változót beállítani arra a helyre, ahova Te pakolod a class.phpmailer.php fájlt!
(Bár persze nem garancia az, hogy most a PHPMailer osztályt használod a klasszikus mail() függvény helyett, hogy most már elfogadja a leveledet a szerver, amire küldöd.De legalább most már PHPMailer osztállyal küldesz levelet, amúgy is ajánlott inkább ilyen vagy ehhez hasonló levelezőosztállyal küldeni.)
-
Sk8erPeter
nagyúr
Ha megmutatod, hogyan használod a mail függvényt (akár kicsillagozva is lehetnek persze az adatok), segítünk, hogyan ültesd át PHPMailerbe ugyanezt.
Igazából azért érdemes ilyen kicsit komplexebb levelezőrendszerbe átrakni (ott van még a SwiftMailer is, az is nagyon jó!), mert nagyon könnyű testreszabni, és a fejlesztői elég sok mindenre gondoltak, így megoldották az általánosan jellemző problémák nagy részét, amivel emiatt a levelezőosztályt felhasználóknak nem kell szenvedniük.
-
Sk8erPeter
nagyúr
Nem, a PHPMailer nem "telepítős", hanem csak fel kell másolni tárhelyre a PHPMailer osztálynak a megfelelő fájlját (legyen pl. class.phpmailer.php
), az osztályt a megfelelő helyen include-olni, példányosítani, beállítgatni a különböző dolgokat (küldő, fogadó, tárgy, tartalom, stb., sokkal kézenfekvőbb, mint a sima mail() függvénnyel szarakodás) és használni, és ennyi.
Itt van egy egyszerű példa.
Furcsa, hogy a vipmail visszadobja. Most hirtelen annyit tudok mondani rá, hogy akkor ne arra küldd.
De hogy értelmesebben reagáljak, meg tudod mutatni, hogyan használod a mail() függvényt? -
Sk8erPeter
nagyúr
itt van egy ilyen:
"511 sorry, can't find a valid MX for sender domain (#5.1.1): You must provide a valid domain within the From address contained in the sender's mail envelope. The sender's domain is considered to be valid if the lookup for an MX record succeeds. If no valid MX record exists, then our email system will assume that no mail should be accepted for a domain that can not receive email."szóval mintha a küldő cím (From mező) nem lenne érvényes.
Amúgy javaslom a PHPMailer osztály használatát, nagyon kézenfekvő a használata, és kicsit használhatóbb, mint a sima mail() függvény.
Új hozzászólás Aktív témák
Hirdetés
- BESZÁMÍTÁS! 1TB Western Digital SN850X NVMe SSD meghajtó garanciával hibátlan működéssel
- VÉGKIÁRUSÍTÁS - REFURBISHED - Lenovo ThinkPad 40A9 docking station
- BESZÁMÍTÁS! HP ZBook 15 G6 munkaállomás - i7 9850H 16GB DDR4 RAM 512GB SSD Quadro T2000 4GB WIN10
- LG 65C2 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- DELL PowerEdge R730xd 16LFF+2SFF rack szerver - 2xE5-2680v3,64GB RAM,4x1GbE,H730 RAID v ZFS
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged