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. Ladonnaboupe
    Yanıtla

    http://auctusgrad.com/forums/user/pancvilsi1983 https://atombrown.com/groups/adultgames-99716 http://kriptobalkan.net/groups/casino-games-online-99669 http://wafflestomp.org/groups/games-for-adults-88296 http://my-private-stash.com/groups/online-casino-86921 http://muhltiply.com/groups/online-casinos-80486 http://hotbhabhiji.com/groups/real-money-casino-85148 http://www.caribbeanvideomarketing.com/forums/topic/3d-adult-games-98359/ http://abwabnet.org/groups/online-gambling-80847 http://abdldates.com/forums/user/hereber1976 http://kriptobalkan.net/groups/online-casinos-97726 http://volusiachurch.com/groups/online-gambling-casino-85182 http://www.smytex.com/groups/adult-online-games-90193 http://dealshappenhere.com/forums/topic/play-casino-94748/ http://washudc.org/forums/user/exbenbi1982 http://enstitu.net/forums/user/mailonca1988 https://seculr.com/groups/online-adult-games-95950 http://indianotion.com/groups/real-money-slots-98225 http://restaurantsintraversecity.com/forums/topic/online-adult-games-86231/ http://thanhuukinh3.org/groups/3d-sex-games-94971

  2. Ladonnaboupe
    Yanıtla

    https://seculr.com/groups/slots-online-86042 http://southeastqldtourism.com.au/groups/online-casino-87082 http://fezzed-travellers.org/groups/adult-games-newgrounds-80388 https://projectgoshen.com/forums/user/tabbubbge1986 http://mygunbroker.net/groups/online-casinos-82224 http://ghanasdgs.info/forums/topic/best-sex-games-97461/ http://www.skillpaw.com/groups/online-casino-gambling-94241 http://mumradar.info/groups/online-gambling-98968 http://americanhomeandgardenexchange.com/groups/adult-online-games-94580 https://jokosystems.com/forums/topic/sexy-games-82016/ http://scientasia.com/groups/gambling-online-85286 http://mftpracticeexam.com/groups/adult-games-82625 http://userforum.azurewebsites.net/groups/online-casino-bonus-96223 https://lescandy.com/forums/topic/online-gambling-casino-94980/ http://www.puppydates.co.uk/forums/topic/online-adult-games-96163/ http://yoyofitt.com/groups/gambling-online-82184 http://restaurantsintraversecity.com/forums/topic/online-casinos-94246/ http://www.activemuslima.org/groups/casino-games-online-91328 http://myopusdei.com/groups/online-gambling-casino-82695 http://tutoreum.com/groups/best-online-casino-96468

  3. Ladonnaboupe
    Yanıtla

    http://acencanal.org/forums/topic/online-casino-bonus-81957/ http://crowdfundforum.com/groups/casino-online-80165 http://www.amecorn.com/groups/online-casino-gambling-92255 http://restaurantsintraversecity.com/forums/topic/best-online-casino-89477/ http://mftpracticeexam.com/forums/user/golertua1981 http://www.cityofmedford.info/groups/adultgames-89600 http://beatsturtle.co.uk/groups/real-money-slots-80026 http://glensinos.com/groups/casinos-online-91679 http://www.lifeedu.com.hk/groups/best-sex-games-88627 http://svshowcase.com/groups/casino-slots-84288 http://www.airsoftexchange.org/forums/topic/adult-sex-games-95892/ http://www.phlisting.com/groups/3d-sex-games-84515 http://www.naoms.org/groups/online-casinos-93319 http://ilearnmedical.co.za/groups/real-money-casino-95374 http://gettydownradio.com/groups/adult-games-newgrounds-93650 http://solarenergy.community/groups/adult-sex-game-98874 http://aspira.network/forums/topic/games-for-adults-80070/ https://www.chronicsouls.com/groups/adult-party-games-80514 http://empoweredfoundation.org/groups/play-casino-online-88876 http://the50seeds.com/groups/casinos-online-95772

  4. Ladonnaboupe
    Yanıtla

    http://turkishub.com/groups/games-for-adults-90142 http://rvitpros.org/groups/play-casino-online-91641 http://ngc.my/groups/online-gambling-casino-91755 http://learnandfun.in/groups/online-gambling-casino-82158 http://www.funmedia4u.com/groups/mysexgames-92435 http://myfucktree.com/forums/topic/casinos-online-80553/ https://tieuppaviation.org/groups/play-casino-online-87223 http://www.roadbesttraveled.com/groups/casino-games-online-93448 http://www.naoms.org/groups/real-money-casino-91963 http://wegamemad.com/groups/casino-slots-83983 http://internetcreditrating.com/groups/sex-games-91124 http://www.marhabapilates.com/forums/topic/adultgames-81433/ http://leadthevoice.com/groups/online-casino-gambling-84329 http://myopusdei.com/groups/online-casino-gambling-95138 https://tieuppaviation.org/groups/sex-games-online-95203 http://unitedwerize.org/groups/casinos-online-91369 http://blackinvestornetwork.com/groups/adult-porn-games-84952 http://www.silvanusinternational.org/groups/3d-sex-games-93427 http://www.brianmedway.com.au/forums/forum/crosslink-special-meeting/ http://citoyen-nouveau.info/forums/topic/online-casino-gambling-86344

  5. Ladonnaboupe
    Yanıtla

    https://www.chronicsouls.com/groups/online-sex-games-92847 http://www.repost.com/groups/best-online-casino-97358 http://mumradar.info/groups/real-money-slots-85787 http://www.everythingstrange.news/groups/casino-games-online-82627 http://com.brainwire-ng.com/groups/sex-flash-games-87941 http://ithele.co.za/groups/gambling-online-88431 https://www.chronicsouls.com/forums/topic/online-casinos-91865/ http://www.phlisting.com/groups/online-adult-games-95148 http://dynamicstaffinggroup.com/forums/topic/sexgames-87267/ http://plentyofcuttlefish.com/forums/user/poefrotal1986 http://evolvenevolve.com/groups/best-sex-games-82841 http://www.habeshacentral.com/groups/slots-online-90658 http://tutorstudents.net/forums/user/uabunteo1984 http://www.clamcia.com/groups/online-casinos-93127 http://chisteschingones.com/groups/online-gambling-casino-86949 http://www.spiritualtrade.com/groups/online-casino-91635 http://www.skillpaw.com/groups/adult-porn-games-95913 http://ithele.co.za/groups/adultgames-87086 http://leadthevoice.com/groups/online-gambling-casino-86686 http://propertyin28days.net/groups/adult-games-newgrounds-85908

  6. Ladonnaboupe
    Yanıtla

    http://jyuku.kz/groups/casino-slots-96956 http://mygreatneighbor.com/forums/user/tulideb1978 http://jorgerazo.com/groups/play-casino-online-87282 http://file-thirteen.com/groups/sexy-game-97717 http://boostcafe.org/groups/online-gambling-casino-90550 http://beatsturtle.co.uk/groups/adult-online-games-87861 http://expresslanguagesonline.com/groups/hentai-sex-games-92377 http://mygunbroker.net/groups/casino-games-slots-90224 http://www.fhle.org/groups/best-adult-games-96737 http://debbyscholar.com/forums/user/pretinal1981 http://fundates.club/forums/topic/adult-flash-games-83674/ http://biztektoolbox.com/groups/online-sex-games-82411 https://www.chronicsouls.com/forums/topic/best-online-casino-86364/ http://nargesmasoud.com/groups/bonus-casino-85872 http://talksforever.com/groups/real-money-casino-85596 http://www.hangingoutforum.com/groups/casino-games-real-money-82592 http://myopusdei.com/groups/adult-games-83845 http://elsonwong.com/imforums/topic/online-casino-gambling-83615/ https://www.bikramyoga.com/forums/topic/sexy-games-93751/ https://projectgoshen.com/groups/sex-games-online-89913

  7. 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.

Anonim için bir cevap yazın Cevabı iptal et

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