Hirdetés

Új hozzászólás Aktív témák

  • Sk8erPeter

    nagyúr

    válasz lesaux #6645 üzenetére

    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! :K

    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. :N 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.)

    [ Szerkesztve ]

    Sk8erPeter

Új hozzászólás Aktív témák