PHP İle İletişim Formu Oluşturmak

Herkese Merhaba, Bu derste PHP ile bir iletişim formu oluşturup daha sonra bu form üzerinden nasıl kendimize mail gönderebileceğimizden bahsedeceğim. Öncelikle mail gönderme işlemi için PHPMailer sınıfını kullanacağımızı belirteyim. Zaten sınıfın kullanımını öğrendikten sonra hiçbir şey kalmıyor geriye. Tek yapmamız gereken kullanıcıdan bir form aracılığıyla birkaç tane bilgi almak ve bunları mail şablonumuza yerleştirip göndermek. Haydi başlayalım. PHPMailer sınıfını Github üzerinden edinebilirsiniz: https://github.com/PHPMailer/PHPMailer Ben ders için önceden Bootstrap kullanarak basit bir mail şablonu hazırladım. Derse eşlik etmek isterseniz bu mail şablonunu kullanabilirsiniz. [code lang="html"] <!DOCTYPE html> <html> <head> <!-- Latest compiled and minified CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <title>PHP İletişim Formu Örneği</title> </head> <body> <div class="container" style="margin-top: 50px;"> <div class="panel panel-default"> <div class="panel-heading"> <h3>Bize Mesaj Gönderin</h3> </div> <div class="panel-body"> <form action="" method="POST"> <div class="form-group"> <label for="name">Ad Soyad</label> <input type="text" class="form-control" id="name" name="name"> </div> <div class="form-group"> <label for="email">Email Adresi</label> <input type="email" class="form-control" id="email" name="email"> </div> <div class="form-group"> <label for="message">Mesaj</label> <textarea class="form-control" id="message" name="message"></textarea> </div> <div class="form-group"> <input type="submit" value="Gönder" class="btn btn-success"> </div> </form> </div> </div> </div> </body> </html> [/code] Şimdi sıra PHPMailer sınıfımız ile mail göndermeye geldi. mail.php adında bir dosya oluşturalım. PHPMailer'ı kullanmadan önce bilmeniz gereken bir şey var. Biz bu örnekte Gmail üzerinden mail göndereceğimiz için Gmail'in SMTP ayarlarını bilmemiz gerekiyor. Gmail'in SMTP ayarları aşağıdaki gibidir. Kendi mail adresinizi kullanacaksanız servis sağlayıcınızla iletişime geçip SMTP ayarlarınızı öğrenebilirsiniz. Gmail SMTP Ayarları: SMTP Server: smtp.gmail.com Kullanıcı Adı: [email protected] Şifre: mail adresinizin şifresi SMTP Port: 587 Bu bilgiler sayesinde Gmail ile bağlantı kurup mail göndereceğiz. İsterseniz kaynak kodları Github üzerinden elde edebilirsiniz ama ben Composer kullanmayı tercih edeceğim. Eğer bilgisayarınızda Composer yüklüyse şu komutla PHPMailer sınıfını projenize dahil edebilirsiniz. [code] composer require phpmailer/phpmailer [/code] Composer hakkında bilginiz yoksa şu dersime bakabilirsiniz: Composer Nedir, Ne İşe Yarar, Nasıl Kullanılır ? Devam edebiliriz. mail.php dosyamızı açalım ve içini doldurmaya başlayalım. Öncelikle PHP etiketlerimizi açıp autoload dosyamızı çağıralım. [code lang="php"] <?php require 'vendor/autoload.php'; [/code] Daha sonra yeni bir PHPMailer objesi oluşturalım. SMTP üzerinden mail göndereceğimizi belirtelim ve kullanıcı adı, server, port gibi ayarlarımızı yapalım. [code lang="php"] $mailer = new PHPMailer; // PHPMailer objesi olusturduk $mailer->isSMTP(); // Maileri SMTP olarak ayarladik $mailer->Host = "smtp.gmail.com"; /* Hostumuzu ayarladik. Birden fazla server kullanmak isterseniz ; ile ayirabilirsiniz. */ $mailer->SMTPAuth = TRUE; // Authorization islemini aktiflestirdik. $mailer->Username = "[email protected]"; $mailer->Password = "Mail adresinizin sifresi"; $mailer->SMTPSecure = "tls"; // tls yerine ssl de kullanabilirsiniz. $mailer->Port = 587; // Baglanilacak portu belirledik. [/code] Temel ayarlarımızı yapmış olduk böylece. Şimdi öncelikli olarak formdan verilerimizi almamız gerekiyor. Daha sonra da mailimizi gönderebiliriz. Formdan verilerimizi almak için şu kod parçası işimizi görür. Bunu da mail.php'ye yazıyoruz. [code lang="php"] if (@$_POST) { $name = $_POST['name']; $email = $_POST['email']; $message = $_POST['message']; if (empty($name) || empty($email) || empty($message)) { die("Lütfen tüm alanları doldurun."); } if (filter_var($email, FILTER_VALIDATE_EMAIL) === false) { die("Lütfen geçerli bir mail adresi girin."); } $mailer->CharSet = 'UTF-8'; $mailer->setFrom('[email protected]'); $mailer->addAddress('[email protected]'); $mailer->addReplyTo($email); $mailer->Subject = "İletişim Formu"; $mailer->Body = "Ad Soyad: $name\nEmail Adresi: $email\nMesaj: $message"; $sendMail = $mailer->send(); if (!$sendMail) die('Mail sistem sorunu sebebiyle gönderilemedi.'); else die('Mesajınız başarılı bir şekilde gönderildi.'); } [/code] Şimdi kodlarımızı açıklayalım biraz. Öncelikle sayfaya gelen herhangi bir POST isteği olup olmadığını kontrol ettik. Eğer gelen bir istek varsa bu istekten ad soyad, mail adresi ve mesaj bilgilerini aldık. daha sonra bunlardan herhangi birisinin boş olması durumunda sistemimizin çalışmayı durdurmasını ve hata vermesini sağladık. Eğer bunların hepsi doluysa bu sefer de filter_var fonksiyonu ile mail adresinin bir mail adresi olup olmadığını teyit ettik. filter_var fonksiyonu hakkındaki dersime de şuradan ulaşabilirsiniz: PHP'de Filtreleme - filter_var Fonksiyonu. Mail adresini de teyit ettikten sonra setFrom metoduyla mailin kim tarafından gönderildiği bilgisini verdik. Daha sonra addAddress metoduyla da mailin nereye gönderileceğini belirttik. Buraya maili almak istediğiniz mail adresinizi yazabilirsiniz. En sonra da addReplyTo metoduyla mail yanıtlanırken hangi mail adresine yanıtlanacağını belirttik ve bunu bize mesaj gönderen kişinin mail adresi olarak ayarladık. Artık mail geldikten sonra yanıtla dediğimiz zaman email alanından aldığımız mail adresine gönderilecek yanıt mailimiz. Daha sonraki 3 satırda mail konumuzu ve mailimizin içeriğini oluşturduk ve bunu gönderip gönderme işlemini sendMail adında bir değişkene atadık. en sonda yazdığımız koşulumuzda da mailin gönderilememesi durumunda hata mesajımızı yazdırıp sistemin çalışmasını durdurduk. Eğer mail gönderilirse de mesajın gönderildiğine dair bir bilgilendirme mesajı ekrana yazdırıp yine sistemin çalışmasını durdurduk. Yapmanız gereken son bir şey kaldı. HTML formumuzun action kısmına mail.php yazmak. Çalışan bir iletişim formumuz olmuş oldu, hayırlı olsun.

1 Yorum

  1. JasonPef
    Yanıtla

    You stated that adequately. best online pharmacies canada canadian pharmacies-24h canadianpharmacy canada pharmaceutical online ordering

  2. MichaelSally
    Yanıtla

    Thanks a lot! Quite a lot of content. rx online trust pharmacy canada online pharmacy trust pharmacy canada

  3. MarceloHaf
    Yanıtla

    Lovely material. Appreciate it. canada pharmacy canada drugs mexican pharmacies canada pharmaceutical online ordering

  4. Josephfrirm
    Yanıtla

    Many thanks, Great stuff. pharmacies near me mexican pharmacies shipping to usa canadian drugstore online canadian viagra

  5. LloydWhave
    Yanıtla

    Superb posts. Thank you! canadian discount pharmacy canadian pharmacies compare rx prices canada drug

  6. JoshuaCat
    Yanıtla

    With thanks. I like it. pain meds online without doctor prescription canadian cialis pharmacy tech canadian pharmacies online

  7. Arturoflurb
    Yanıtla

    Truly a lot of beneficial facts! drug costs canadian pharmacies online trust pharmacy canada canada pharmacy online

  8. Craigvah
    Yanıtla

    You said it very well.! safe canadian online pharmacies canadapharmacy pharmacy tech northwest pharmacy

  9. JoshuaCat
    Yanıtla

    Many thanks! Wonderful stuff. northwest pharmacy canada canada rx web medical information canadian pharmacy online

  10. JasonPef
    Yanıtla

    Many thanks! An abundance of advice! canada pharmacies online pharmacy canadian drugs online canadian pharcharmy canadian pharmaceuticals online

  11. MarceloHaf
    Yanıtla

    Amazing content, Thank you. pharmacy without dr prescriptions canadian pharmacies without an rx internet pharmacy canadian pharmacies that ship to us

  12. Josephfrirm
    Yanıtla

    Amazing tons of good data. online pharmacy without a prescription canadadrugsonline canadian viagra northwestpharmacy

  13. LloydWhave
    Yanıtla

    Many thanks, I value it. web medical information drugs from canada best online pharmacies no prescription canada drug

  14. MichaelSally
    Yanıtla

    Amazing quite a lot of amazing knowledge. buy prescription drugs online canadian pharmacies-24h pharmacy online store canadian pharcharmy

  15. Arturoflurb
    Yanıtla

    Nicely put, Many thanks! prescription drugs without prior prescription canadian pharmacies online trust pharmacy canada top rated canadian pharmacies online

  16. Craigvah
    Yanıtla

    Seriously all kinds of awesome info. online discount pharmacy northwest pharmacy canada canadian pharmacy viagra brand canadian pharmacies-24h

  17. JasonPef
    Yanıtla

    With thanks! An abundance of data. canadian pharmacies canada pharmacy online drug stores near me canadian pharmacies

  18. MarceloHaf
    Yanıtla

    Whoa tons of terrific advice! global pharmacy canada canadian viagra global pharmacy canada canada pharmaceutical online ordering

  19. JoshuaCat
    Yanıtla

    You made the point! canadapharmacyonline com canada pharmacy online canadianpharmacy canadian pharmaceuticals online

  20. LloydWhave
    Yanıtla

    Many thanks. I enjoy it. canadian pharmacy aarp approved canadian online pharmacies buy prescription drugs from canada best canadian online pharmacies

  21. Josephfrirm
    Yanıtla

    Great forum posts. Thanks a lot! canada drugs online pharmacy trust pharmacy canada prescription drugs without prior prescription canadianpharmacyking.com

  22. JoshuaCat
    Yanıtla

    You actually mentioned it very well. canadian pharmacy king canadian drugs canadian drugstore reviews canadian pharmacies

  23. [email protected]
    Yanıtla

    Invite You to Review Our Product Hi,   My name is Trish from the American Beauty Association. I’m reaching out to you because we are looking for beauty enthusiasts like you to test product. Would you be willing to test the Mieoko Flat Top Brush? You can visit www.centtip.xyz if you are interested. Thanks for your time, Trish

  24. Kathleen Williams
    Yanıtla

    Kredi ihtiyacı mu var? Şu anda, doğrulama için uygun geçerli bir kimlik kartıyla% 2 faiz oranıyla değişken bir kredi programı öneriyoruz. İhtiyacınız olan miktarda kredi için kredi talebinizi gönderebilirsiniz. 5.000,00 USD Min tutarında krediler sunuyoruz. 50.000.000 $ USD Max. En fazla bir (1) ila elli (50) yıl arası uzun vadeli kredi veriyoruz. Aşağıdaki kredi türlerini veriyoruz: Proje kredisi, Refinansman kredisi, ticari yatırım kredisi, araç veya araç kredisi, Öğrenci kredisi, borç birleştirme, konut kredisi, Bireysel krediler, seyahat ve tatil kredisi, Noel ve yeni yıl kredisi. QUICK ASSESS LOAN FIRM bürosunda e-posta yoluyla bize ulaşın: [email protected] web sitesi: quickassessloanfir.wixsite.com/quickassessloanfirm telefon numarası / whatsapp: +14088372285 Patronajınız için teşekkür ederiz! Saygılarımla, Kathleen Williams.

  25. Raşit
    Yanıtla

    merhaba, ziyaretçi defteri mesaj yanıtla sayfasını yapamadım. phpmailer ile o sayfayı nasıl entegre edebilirim. Orada takıldım. Ziyaretçiden gelen maili yanıtla sayfasını çözemedim. Emeğiniz için teşekkür eder, başarılar dilerim.

Yorum Bırakın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir