Php ile Mail Göndermek (SMTP)

Php ile web sitenizde iletişim bölümünden kullanıcıların size ulaşmasını sağlayabiliyoruz bildiğiniz gibi. Bunu da mail fonksiyonu ile yapıyoruz. Fonksiyonun kullanımı oldukça basit ancak birkaç hazır kod da kullanılması gerekiyor tabi ki. Fonksiyonun kullanımı ise şu şekildedir ; alıcının email adresi, gönderenin adı, gönderenenin email adresi, mesaj…

Mail göndermek için SMTP sunucusunu kullanacağız. Öncelikle standart bir forma ihtiyacımız var gerekli bilgilerin kullanıcıdan alınabildiği. Formumuzun görüntüsü şu şekilde olabilir ;

<div class="container">
		
	<div class="row">
	<div class="col-md-3"></div>
	
	<div class="col-md-6">
	<div class="well">
	<h3>Bize Buradan Ulaşabilirsiniz.</h3><br>
	<form action="" method="post">
	
	<input type="text" name="adsoyad" class="form-control" Placeholder="İsim ve Soyisim Girin" />
	<br />
	<input type="text" name="email" class="form-control" Placeholder="Mail Adresinizi girin..." />
	<br />
	<textarea rows="5" type="text" name="mesaj" class="form-control" Placeholder="Mesaj yazın..." /></textarea>
	<br>
	<input type="submit" value="Gönder" class="btn btn-default" />
	</form>
	</div>
	Anasayfaya dönmek için <a href="https://www.harunalp.com"> tıklayınız.</a>
	</div>
	
	<div class="col-md-3">
	
	</h4>
	</div>
	</div>
	</div>

Bu tarzda bir form yaptıktan sonra işimiz tamamen mail() fonksiyonunun verdiği kolaylıklara kalıyor. Önce standart post metodları ile bilgileri kullanıcıdan alalım.Ardından boşluk kontrolü yapıp maili gönderelim.Burada eposta kontrolü yok.Onu da buradaki yazımdan okuyarak yapabilirsiniz.

$ad= $_POST['adsoyad'];   
$email  = $_POST['email'];
$msg	= $_POST['mesaj'];

if(!$ad || !$email || !$msg){
			echo "<div class='alert alert-danger'><b>Hata! </b>Boş alan bırakmayın!</div>";
			$adres = $_SERVER["HTTP_REFERRER"];
			header('Refresh:1 ; url='.$adres.'');
		}else{
		
		$mailtanim = "MIME-Version: 1.0\r\n"; // bu kısım tanımlama kısmı
		$mailtanim .= "Content-type: text/plain; charset=iso-8859-9\r\n";
		$mailtanim .= "From: $name <$ad>\r\n";
		$mailtanim .= "Reply-To: $name <$email>\r\n"; 	

		$mailsonuc = mail("[email protected]", "$email adresinden mesajınız var..!" ,stripslashes($msg), $mailtanim); 

		if($mailsonuc) { 
			echo "<div class='alert alert-success'><b>E-Postanız başarıyla gönderildi.</b>Ana sayfaya yönlendiriliyorsunuz!</div>";
			$adres = 'https://www.harunalp.com';
			header('Refresh:2 ; url='.$adres.'');
		}
		else{
			echo "<div class='alert alert-danger'><b>Hata! </b> Mail gönderilirken hata oluştu..!</div>";
			$adres = $_SERVER["HTTP_REFERRER"];
			header('Refresh:1 ; url='.$adres.'');
		}
		}

Temel mantık bu şekildedir. Alınan bilgide mail için bazı header tanımlamaları yapılır ve gidecek adres, konu , içerik ve mail tanımı görünür. Ardından gerekli kontroller mesaj için yapıldıktan sonra da kullanıcıya mailin gidip gitmediği ile ilgili mesaj verdirilir.

Formda kullandığım bazı classları bilmeyenler için açıklayayım. Bunlar boostrap kullanımı içindir. Gerekli sınıfı çağırdıktan , klasörleri ana dizine attıktan sonra özel kütüphaneyi kullanmaya başlayabilirsiniz.

Sonuç olarak mail gönderme sayfasına ihtiyaç duyduğunuz zaman kara kara mail fonksiyonunu nasıl yazarım diye düşünmeyin. Birçok kaynak hazır olarak bizlere bunları sunuyor. Tercih ettiğiniz hazır kodu alıp kendinizce düzenleyebilirsiniz.

“Localhost’ta Mail Gönderemiyorum”

Bu hatayı birçok kişi alıyor.Aslında hata değil… Localhostta mail gönderimi yapılamamakta. Eğer tüm kodları doğru yazdığınıza eminseniz bir de sunucuya atıp orada deneyin , çalışacaktır.

Sunucuda Mail Gönderme Sorunu

Smtp Mail sunucusunu kullandığımızı varsayarak anlatayım. Öncelikle en kolay , en güvenli ve kullanışlı mail sunucusu olduğunu söylemekte fayda var. Sunucunuza attığınız mail fonksiyonu yani iletişim sayfası halen hata vermeye devam ediyorsa bunu hosting firmanız ile görüşerek halledebilirsiniz. Otomatik olarak mail servisi kapalı olur.Bunun sebebi ise otomatik olarak açık bırakıldığında maillerin spam’a girmesi , bu yüzden engel yeme riskinizdir. Sizin için alınan bir önlem olarak düşünebilirsiniz.

Ufak Bir Bilgi : yukarıdaki kodlarda bir kısım yönlendirme kodları mevcut. Bunlar eğer sizde çalışmıyor ise, ya da saniyeli olarak yönlenmiyor ise buradaki yazımı okumanızı tavsiye ederim.

Son olarak sayfamda kullandığım bütün kodları paylaşayım ve makalemi bitireyim.Eğer kodlarda bir sorun yada gözden kaçan , hoşunuza gitmeyen, böyle olsaydı daha iyi olurdu dediğiniz yerler var ise bunu yorum olarak belirtebilirsiniz. Ek olarak olumlu yanıtlarınızı da bekliyorum. İyi çalışmalar.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">   
    <title>Php mail Fonksiyonu</title>   
    <link href="css/bootstrap.min.css" rel="stylesheet">
<style type="text/css">
body{
	padding:10px;
}
.row{
	margin-top:20px;
}
</style>	
  </head>
  <body>
    
	<?php 
	
	if($_POST){
		
		error_reporting(0);
		$ad		= $_POST['adsoyad'];   
		$email  = $_POST['email'];
		$msg	= $_POST['mesaj'];

		if(!$ad || !$email || !$msg){
			echo "<div class='alert alert-danger'><b>Hata! </b>Boş alan bırakmayın!</div>";
			$adres = $_SERVER["HTTP_REFERRER"];
			header('Refresh:1 ; url='.$adres.'');
		}else{
		
		$mailtanim = "MIME-Version: 1.0\r\n"; // bu kısım tanımlama kısmı
		$mailtanim .= "Content-type: text/plain; charset=iso-8859-9\r\n";
		$mailtanim .= "From: $name <$ad>\r\n";
		$mailtanim .= "Reply-To: $name <$email>\r\n"; 	

		$mailsonuc = mail("[email protected]", "$email adresinden mesajınız var..!" ,stripslashes($msg), $mailtanim); 

		if($mailsonuc) { 
			echo "<div class='alert alert-success'><b>E-Postanız başarıyla gönderildi.</b>Ana sayfaya yönlendiriliyorsunuz!</div>";
			$adres = 'https://www.harunalp.com';
			header('Refresh:2 ; url='.$adres.'');
		}
		else{
			echo "<div class='alert alert-danger'><b>Hata! </b> Mail gönderilirken hata oluştu..!</div>";
			$adres = $_SERVER["HTTP_REFERRER"];
			header('Refresh:1 ; url='.$adres.'');
		}
		}	
	}else{
		?>
		<div class="container">
		
	<div class="row">
	<div class="col-md-3"></div>
	
	<div class="col-md-6">
	<div class="well">
	<h3>Bize Buradan Ulaşabilirsiniz.</h3><br>
	<form action="" method="post">
	
	<input type="text" name="adsoyad" class="form-control" Placeholder="İsim ve Soyisim Girin" />
	<br />
	<input type="text" name="email" class="form-control" Placeholder="Mail Adresinizi girin..." />
	<br />
	<textarea rows="5" type="text" name="mesaj" class="form-control" Placeholder="Mesaj yazın..." /></textarea>
	<br>
	<input type="submit" value="Gönder" class="btn btn-default" />
	</form>
	</div>
	Anasayfaya dönmek için <a href="https://www.harunalp.com"> tıklayınız.</a>
	</div>
	
	<div class="col-md-3">
	
	</div>
	</div>
	</div>
		<?php
	}
	
	
	?>
	
	
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script src="js/bootstrap.min.js"></script>
  </body>
</html>

 

AuthorHarun ALP

Bu adam , bilgi sahibi olduğu konularda makalelerini daha bilgilendirici hale getirip görseller ile süslüyor ve seo uyumlu makaleler ortaya çıkarıyor. Güncel webmaster konularını işlemekten keyif alıyor ve genelde her makale aslında bir sorunun çözümü niteliğinde.

One thought on “Php ile Mail Göndermek (SMTP)

  1. Harun kardeşim emeğine sağlık gerçekten de güzel paylaşım olmuş. Smtp mail ile mail yollamak gerçekten de şu anda en güzel mail gönderme çözümü. Bende kullanıyorum, yazılarınızın devamını bekliyorum.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir