PHPMailler Nasıl Kullanılır?
PHP Web dili içinde email gönderme olayını bir proje geliştirmişseniz mutlaka ihtiyaç duymuşsunuzdur. En basitinden kişisel web sitenizini iletişim formunu dolduran ziyaretçinin email adresinize gelmesini isteyebilirsiniz.
Eskiden Linux ortamı üzerinde yazdığımız emailleri göndermek için mail() fonksiyonu kullanılıyordu, fakat sunuculardaki kimlik doğrulama ve sahtecilik problemlerinden dolayı artık kullanamıyoruz, çoğu sunucu da artık desteklemiyor.
Bu arada email gönderme ve alma ile ilgili SMTP ve POP3 gibi kavramları bildiğinizi varsayıyorum, bilimiyorsanız bir hata mesajı aldığınızda neden kaynaklandığını tespit etmeniz zor olabilir.
Gelelim email sınıfının kullanımına önce kök dosyalarını Github üzerinden ( "src" klasörü içerisinde bulabilirsiniz) indiriyoruz.
Aşşada vermiş olduğum kodları kendi iletişim formunuza göre şekillendire bilirsiniz.
<form action="sendmail.php" method="post"> <label for="name">İsim:</label><br> <input type="text" name="name" id="name"><br> <label for="mail">Mail</label><br> <input type="text" name="mail" id="mail"><br> <label for="subject">Konu</label><br> <input type="text" name="subject" id="subject"><br> <label for="message">Mesajınız</label><br> <textarea name="message" cols="30" rows="10" id="message"></textarea><br><br> <input type="submit" value="Gönder"> </form>
Burada dikkat etmeniz gereken en önemli nokta iletişim formunun, "action" ve "method" kısımları. "action" kısmı kullanıcı gönder butonuna tıkladığında formun neyi nerede yapması gerektiğini gösteren yoldur. "method" kısmı ise sizin kullanıcıdan aldığınız verileri hangi formatta işleyeceğinizi söyler.
<?php use PHPMailer\PHPMailer\PHPMailer; use PHPMailer\PHPMailer\Exception; require 'src/Exception.php'; require 'src/PHPMailer.php'; require 'src/SMTP.php'; $mail = new PHPMailer(true); try { //Server settings $mail->CharSet = 'UTF-8'; $mail->isSMTP(); $mail->Host = 'mail.alanadiniz.com'; // SMTP sunucusu örnek : mail.alanadi.com $mail->SMTPAuth = true; // SMTP Doğrulama $mail->Username = 'isim@alanadiniz.com'; // Mail kullanıcı adı $mail->Password = 'Şifreiniz'; // Mail şifresi $mail->SMTPSecure = 'tls'; // Şifreleme $mail->Port = 587; // SMTP Port //Alıcılar $mail->setfrom('isim@alanadiniz.com', 'İletişim Formu'); // mail'i gönderen adres ve mailin geldiği sayfa $mail->addAddress($_POST['mail']); // mailin gönderileceği adres $mail->addReplyTo($_POST['mail'], $_POST['name']); //Gönderilen mail'in İçeriği $mail->isHTML(true); $mail->Subject = 'İletişim Formu.'; $mail->Body = $_POST['message']; $mail->send(); echo "Mesajınız İletildi --> ".$_POST['mail']."<br>"; } catch (Exception $e) { echo 'Mesajınız İletilemedi. Hata: ', $mail->ErrorInfo; } ?>
Bu kısımda dikkat etmeniz gereken nokta PHPMailler dosyalarının sitenizin kök dizininde olması ve doğru bir yol ile belirtilmiş olması.
SMPT hatası alanlar için kök dizine attığınız dosyalar içinden PHPMailler.php dosyasının içine girip "host name" ve "mail adresi" , "mail şifresi" kısımları oradan da doldurun sorununuz çözülecektir.
Debug
Eğer mail gönderme esnasında problem yaşıyorsanız aşağıdaki kod'u "Charset'in" altına yapıştırarak hata iletisini aktif edebilirsiniz.
$phpmailer->SMTPDebug = 2;