PHP ile SMTP E-posta (E-mail) Gönderimi

65
PHP mail, PHP SMTP mail, PHP iletisim formu
Bir çok Hosting firmasında olduğu gibi firmamızda da PHP mail() fonksiyonu ile e-posta gönderimine izin verilmemektedir. Bu fonksiyonun kullanılmasına izin verilmemesinin nedeni, PHP mail() fonksiyonunda hiçbir doğrulama olmadan direk olarak e-posta gönderilebilmesidir. Bu şekilde gönderilen e-posta mesajları direkt olarak spam olarak algılanıp gereksiz kutusuna düşebilmekte, fazla gönderimlerde ise sunucu IP adresinin kara listeye girmesine neden olmaktadır.

PHP ile e-posta gönderebilmek için PHPMailer kütüphanesi kullanılarak SMTP bağlantısı ile e-posta gönderimi yapılmalıdır.

Örnek İletişim Formu

ZIP dosyası içindeki send_mail.php dosyasında gerekli düzenlemeleri yaparak e-posta gönderimi yapabilirsiniz.


<?php
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'PHPMailer/src/Exception.php';
require 'PHPMailer/src/PHPMailer.php';

if($_POST['eposta']<>'' && $_POST['isim']<>'' && $_POST['telefon']<>'' && $_POST['mesaj']<>''){

	$isim=$_POST['isim'];
	$eposta=$_POST['eposta'];
	$telefon=$_POST['telefon'];
	$mesaj=$_POST['mesaj'];

	$mail = new PHPMailer(true);				// Passing `true` enables exceptions
	try {
		//Server settings
		$mail->SMTPDebug = 0;				// SMTP hata ayıklama // 0 = mesaj göstermez // 1 = sadece mesaj gösterir // 2 = hata ve mesaj gösterir
		$mail->isSMTP();										
		$mail->SMTPAuth = true;				// SMTP doğrulamayı etkinleştirir
		$mail->Username = 'gonderen@alanadi.com';	// SMTP kullanıcı adı (gönderici adresi)
		$mail->Password = 'şifre';			// SMTP şifre
		$mail->Host = 'mail.alanadi.com';		// Mail sunucusunun adresi
		$mail->Port = 587;				// Normal bağlantı için 587, güvenli bağlantı için 465 yazın
		$mail->SMTPSecure = 'tls';			// Enable TLS encryption, '' , 'ssl' , 'tls'
		$mail->SMTPOptions = array(
			'ssl' => [
				'verify_peer' => false,
				'verify_peer_name' => false,
				'allow_self_signed' => true,
			],
		);
		$mail->SetLanguage('tr', 'PHPMailer/language/');
	
		//Recipients
		$mail->setFrom('gonderen@alanadi.com', 'Adınız Soyadınız');	// Mail atıldığında gorulecek isim ve email
		$mail->addAddress('alici@alanadi.com');				// Mailin gönderileceği alıcı adresi

		//Content
		$mail->isHTML(true);                                  
		$mail->Subject = 'İletişim formundan mesajınız var!';				// Email konusu
		$mail->Body    = "$isim<br />$eposta<br />$telefon<br />$mesaj";		// Mailin içeriği
		$mail->CharSet = 'utf-8';
		$mail->send();
		echo 'Mesaj gönderildi';
	} catch (Exception $e) {
		echo 'Mesaj gönderilmedi. Hata: ', $mail->ErrorInfo;
	}
}


dnm-knowledgebasehelpful