Php dersleri serimizin bu yazısında hazırlayacağımız iletişim formu üzerinden girilen bilgileri smtp kullanarak e-posta adresine gönderen bir php scripti hazırlıyoruz.
Daha önce PHP ile ilgili temel bilgileri ve çeşitli fonksiyonları incelediğimiz PHP dersleri serimizin bu bölümünde HTML5 ve Bootstrap 4 ile hazırlayacağımız bir iletişim formu üzerinden, kullanıcı tarafından girilen bilgileri istediğimiz bir mail adresine nasıl göndereceğimizi öğreneceğiz. Php ile basit bir iletişim formu hazırlayacağımız bu öğretici yazıda tasarımı kolaylaştırmak için Bootstrap 4 kullacağınız. Ayrıca smtp üzerinden mail gönderimi yapacağımız için PHPmailer sınıfından da faydalanacağınız.
HTML5 ve Bootstap 4 ile İletişim Formu Tasarlama
Öncelikle kullandığınız kod editörü üzerinden iletisim.php adında bir php dosyası oluşturun ve aşağıda Bootstrap 4 ile hazırladığım şablondaki kodları kopyalayıp oluşturmuş olduğunuz iletisim.php isimli dosyanıza yapıştırın.
<!doctype html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title>PHP İletişim Formu</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>PHP İletişim Formu</h1>
<form method="POST" action="">
<div class="form-group">
<label for="adsoyad">Ad Soyad</label>
<input type="text" class="form-control" name="adsoyad" id="adsoyad" required>
</div>
<div class="form-group">
<label for="email">E-Posta</label>
<input type="email" class="form-control" name="email" id="email" required>
</div>
<div class="form-group">
<label for="konu">Konu</label>
<input type="text" class="form-control" name="konu" id="konu" required>
</div>
<div class="form-group">
<label for="mesaj">Mesaj</label>
<textarea class="form-control" name="mesaj" id="mesaj" rows="3" required></textarea>
</div>
<input type="hidden" name="islem" value="gonder" required>
<button type="submit" class="btn btn-primary">Gönder</button>
</form>
</div>
<!-- JavaScript -->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
Bu şablon içerisinde bulunan form elementinde kullandığımız method="POST"
özelliği ile girilen verileri POST yönetimi ile göndereceğimizi tanımlıyoruz. Yani formdan gönderilen bilgiler adres çubuğunda görünmeden belirlediğimiz sayfaya iletilecek. Ayrıca action=""
özelliğini boş bırakarak form gönderildiğinde yine aynı iletisim.php sayfasına yönlendirmeyi sağlıyoruz. Bu örnekte formdan gelen verileri aynı sayfada işleyeceğimiz için action özelliğini bu şekilde boş bıraktık. Ancak siz isterseniz ayrı bir php dosyası oluşturarak formdan gelen verileri ayrı sayfada işleyebilirsiniz. Bunun için action bölümüne hazırladığınız php dosyasını yazmanız yeterli olacaktır.
Tasarımda faydalandığımız Bootstrap 4 kütüphanesini buraya tıklayarak indirebilir veya inceleyebilirsiniz.
Formdan Gelen Verilerin SMTP ile Mail Adresine Gönderilmesi
Form tasarımımız hazır olduğuna göre gelelim form gönderildiğinde yapılacak işlemlere. Bu örneğimizde formdan gelen verileri SMTP kullanarak belirlediğimiz bir mail adresine göndereceğiz. Bu işlem için PHPMailer kütüphanesinden faydalanıyoruz.
Buraya tıklayarak PHPMailer kütüphanesini indirdikten sonra iletisim.php dosyamızın olduğu yere .rar içerisinden çıkan phpmailer klasörünü kopyalıyoruz.
Sonraki aşamada aşağıda paylaştığım kodları oluşturmuş olduğunuz iletisim.php dosyasının en üstüne eklemeniz gerekiyor.
<?php
$hata = false;
$gonder = false;
//Gönderme işleminin mevcut olup olmadığını kontrol ediyoruz.
if( isset($_POST["islem"]) && $_POST["islem"]=="gonder" ) {
//Formdan gelen verilerin eksiksiz olup olmadığını kontrol ediyoruz.
if( !empty($_POST["adsoyad"]) && !empty($_POST["email"]) && !empty($_POST["konu"]) && !empty($_POST["mesaj"]) ) {
//PHPMailer
include_once('phpmailer/class.phpmailer.php');
//Ayarlar (Bu ayarlar için gerekli bilgiler kullandığınız sunucuya göre değişebilir.)
$mail = new PHPMailer();
$mail->isSMTP(); //SMTP Aktif
//$mail->SMTPDebug = 1; //Hata Gösterimi Aktif
//$mail->SMTPSecure = 'tls'; //TLS Aktif
$mail->SMTPAuth = true; //SMTP Kimlik Doğrulaması Aktif
$mail->Host = '[email protected]'; //SMTP Host
$mail->Username = '[email protected]'; //SMTP Kullanıcı Adınız
$mail->Password = 'password'; //SMTP Şifreniz
$mail->Port = 587; //SMTP Portu
$mail->setFrom('[email protected]', 'Gönderen Adı'); //Mailin Kimden Gönderildiği
$mail->addAddress('[email protected]', 'Alıcı Adı'); //Mailin Gönderileceği Adres (Buraya formdan gelen mesajın gönderileceği mail adresini giriniz.)
//HTML Aktif
$mail->isHTML(true);
$mail->CharSet ="utf-8";
//Mail Başlığı
$mail->Subject = 'İletişim Formu Mesajı';
//Mail İçeriği
$mail->Body = '<p><strong>Gönderen:</strong> ' . $_POST["adsoyad"] . ' - ' . $_POST["email"] . '</p>'.
'<p><strong>Konu:</strong> ' . $_POST["konu"] . '</p>'.
'<p><strong>Mesaj:</strong> ' . $_POST["mesaj"] . '</p>';
//Gönder
if ( $mail->send() ) {
$gonder = true;
} else {
$hata = true;
$hata_mesaj = "Mesaj gönderilirken bir hata oluştu: ".$mail->ErrorInfo;
}
} else {
$hata = true;
$hata_mesaj = "Lütfen tüm alanları doldurun.";
}
}
?>
Kod bloğunda görüldüğü gibi öncelikle formun gönderilip gönderilmediğini anlayabilmek için "islem"
isimli alanı kontrol ediyoruz. Eğer form gönderilmişse bu kez formda bulunan alanlarının eksiksiz olup olmadığına bakıyoruz.
Eğer tüm kontroller tamam ise class.phpmailer.php dosyamızı kod bloğuna dahil edip, mail gönderimi için gerekli SMTP ayarlarını tanımlıyoruz. Buradaki ayarlar sunucudan sunucuya farklılık gösterebileceği için en doğru ayarları sunucu firmanızdan öğrenebilirsiniz. Bu ayarlar ile WampServer üzerinde sorunsuz çalışıyor.
Son olarak form tasarımımızda başlığın altına aşağıdaki uyarı kontrollerini de ekliyoruz. Bu sayede form gönderildiğinde gerekli uyarıları kullanıcıya göstermiş olacağız.
<?php if ($gonder) { ?>
<div class="alert alert-success">Mesajınız başarıyla gönderildi.</div>
<?php } ?>
<?php if ($hata) { ?>
<div class="alert alert-warning"><?php echo $hata_mesaj; ?></div>
<?php } ?>
Sonuç
Tüm adımları eksiksiz uyguladığınızda iletisim.php dosyamız aşağıdaki gibi olacak.
<?php
$hata = false;
$gonder = false;
//Gönderme işleminin mevcut olup olmadığını kontrol ediyoruz.
if( isset($_POST["islem"]) && $_POST["islem"]=="gonder" ) {
//Formdan gelen verilerin eksiksiz olup olmadığını kontrol ediyoruz.
if( !empty($_POST["adsoyad"]) && !empty($_POST["email"]) && !empty($_POST["konu"]) && !empty($_POST["mesaj"]) ) {
//PHPMailer
include_once('phpmailer/class.phpmailer.php');
//Ayarlar (Bu ayarlar için gerekli bilgiler kullandığınız sunucuya göre değişebilir.)
$mail = new PHPMailer();
$mail->isSMTP(); //SMTP Aktif
//$mail->SMTPDebug = 1; //Hata Gösterimi Aktif
//$mail->SMTPSecure = 'tls'; //TLS Aktif
$mail->SMTPAuth = true; //SMTP Kimlik Doğrulaması Aktif
$mail->Host = '[email protected]'; //SMTP Host
$mail->Username = '[email protected]'; //SMTP Kullanıcı Adınız
$mail->Password = 'password'; //SMTP Şifreniz
$mail->Port = 587; //SMTP Portu
$mail->setFrom('[email protected]', 'Gönderen Adı'); //Mailin Kimden Gönderildiği
$mail->addAddress('[email protected]', 'Alıcı Adı'); //Mailin Gönderileceği Adres (Buraya formdan gelen mesajın gönderileceği mail adresini giriniz.)
//HTML Aktif
$mail->isHTML(true);
$mail->CharSet ="utf-8";
//Mail Başlığı
$mail->Subject = 'İletişim Formu Mesajı';
//Mail İçeriği
$mail->Body = '<p><strong>Gönderen:</strong> ' . $_POST["adsoyad"] . ' - ' . $_POST["email"] . '</p>'.
'<p><strong>Konu:</strong> ' . $_POST["konu"] . '</p>'.
'<p><strong>Mesaj:</strong> ' . $_POST["mesaj"] . '</p>';
//Gönder
if ( $mail->send() ) {
$gonder = true;
} else {
$hata = true;
$hata_mesaj = "Mesaj gönderilirken bir hata oluştu: ".$mail->ErrorInfo;
}
} else {
$hata = true;
$hata_mesaj = "Lütfen tüm alanları doldurun.";
}
}
?>
<!doctype html>
<html lang="tr">
<head>
<meta charset="utf-8">
<title>PHP İletişim Formu</title>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css" integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous">
</head>
<body>
<div class="container">
<h1>PHP İletişim Formu</h1>
<?php if ($gonder) { ?>
<div class="alert alert-success">Mesajınız başarıyla gönderildi.</div>
<?php } ?>
<?php if ($hata) { ?>
<div class="alert alert-warning"><?php echo $hata_mesaj; ?></div>
<?php } ?>
<form method="POST" action="">
<div class="form-group">
<label for="adsoyad">Ad Soyad</label>
<input type="text" class="form-control" name="adsoyad" id="adsoyad" required>
</div>
<div class="form-group">
<label for="email">E-Posta</label>
<input type="email" class="form-control" name="email" id="email" required>
</div>
<div class="form-group">
<label for="konu">Konu</label>
<input type="text" class="form-control" name="konu" id="konu" required>
</div>
<div class="form-group">
<label for="mesaj">Mesaj</label>
<textarea class="form-control" name="mesaj" id="mesaj" rows="3" required></textarea>
</div>
<input type="hidden" name="islem" value="gonder" required>
<button type="submit" class="btn btn-primary">Gönder</button>
</form>
</div>
<!-- JavaScript -->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>
İşte PHP ile iletişim formundan gelen verileri SMTP kullanarak belirlediğimiz bir e-posta adresine bu şekilde gönderebilirsiniz. Aşağıdaki linkte script dosyalarının tamamını bulabilir ve indirip inceleyebilirsiniz.
PHP ile İletişim Formu Script İndir
Daha fazla PHP ve yazılım ile ilgili öğretici içerikler için Yazılım kategorimize göz atmayı unutmayın. Ayrıca aklınıza takılanları yorum bölümünden paylaşabilirsiniz.
Yorumlar