PHP SMPT mail gönderme işlemi ile güvenli bir şekilde mail gönderebilirsiniz. Mail gönderme işlemi günümüz yazılımlarının neredeyse hepsinde kullanılan temel bir özelliktir. Kullanıcı bilgilendirme, mail onaylama, sipariş bildirimi gibi bir çok konuda kullanıcıları bilgilendirmenin en basit ve düşük maliyetli yoludur.
SMTP Nedir?
SMTP açılımı ‘Simple mail transfer protochol’ yani basit mail gönderme protokolü’dür. Mail göndermek veya almak için kullanılır. Mail gönderirken genellikle gönderilecek sunucunun 587 or 465 numaralı portlarına veri iletilir. SMPT 1980’ler den bu yana güncellenerek gelmiştir.
SMTP ile Mail Göndermek
SMTP ile mail göndermek için öncelikle mail sunucunuzun SMTP bilgilerine ulaşmalısınız. PHP ile mail göndermek için phpmailer kütüphanesini kullanacağız.
Eğer cpanel kullanıyorsanız CPanel ile Özel Uzantılı Mail Adresi Nasıl Oluşturulur? SMTP Bilgileri Nerede? isimli yazımızı okumanızı tavsiye ederiz.
Bu ayarları wordpress websitenizde kullanacaksanız WordPress Smtp Email Ayarları Nasıl Yapılır? | WP Mail SMTP Eklentisi Kurulumu isimli yazımızı okumanızı tabsiye ederiz.
Yazımızın devamında sunucunuzun SMTP bilgilerini elde ettiğinizi varsayarak ilerleyeceğiz.
Öncelikle PHP mailer kütüphanesini kuralım. İsterseniz composer ile projenize dahil edebilirsiniz veya github repo’su üzerinden indirip projenize dahil edebilirsiniz.
PHPMailer kurulumu
- Yöntem : Composer ile phpmailer kurulumu ( composer sisteminizde kurulu değilse : https://getcomposer.org/download/ )
composer require phpmailer/phpmailer
Composer ile projenize dahil ettiyseniz php sayfanızın başına aşağıdaki kodları eklemelisiniz:
<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
2.Yöntem : Github üzerinden projeye dahil edilmesi
Resmi phpmailer github sayfasından bu kütüphanenin son halini zip olarak indirebilirsiniz :
https://github.com/PHPMailer/PHPMailer/releases
Direk kütüphaneyi sayfaya dahil edip kullanmak istiyorsanız sayfanın başında dosyaları sayfaya dahil etmelisiniz.
<?php
require 'path/to/PHPMailer/src/Exception.php';
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
Kütüphane kurulumu tamamlandı ise artık mail gönderme işlemine devam edebiliriz.
PHP SMTP mail gönderme işlemi
Hosting firmanızdan veya mail sağlayıcınızdan temin ettiğiniz SMTP bilgilerini aşağıdaki bilgiler ile değiştirerek mail gönderme işlemini gerçekleştirebilirsiniz.
<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;
//Load Composer's autoloader
require 'vendor/autoload.php';
//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);
try {
//Server settings
$mail->SMTPDebug = SMTP::DEBUG_SERVER; //Enable verbose debug output
$mail->isSMTP(); //Send using SMTP
$mail->Host = 'smtp.example.com'; //Set the SMTP server to send through
$mail->SMTPAuth = true; //Enable SMTP authentication
$mail->Username = '[email protected]'; //SMTP username
$mail->Password = 'secret'; //SMTP password
$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS; //Enable implicit TLS encryption
$mail->Port = 465; //TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
//Recipients
$mail->setFrom('[email protected]', 'Mailer');
$mail->addAddress('[email protected]', 'Joe User'); //Add a recipient
$mail->addAddress('[email protected]'); //Name is optional
$mail->addReplyTo('[email protected]', 'Information');
$mail->addCC('[email protected]');
$mail->addBCC('[email protected]');
//Attachments
$mail->addAttachment('/var/tmp/file.tar.gz'); //Add attachments
$mail->addAttachment('/tmp/image.jpg', 'new.jpg'); //Optional name
//Content
$mail->isHTML(true); //Set email format to HTML
$mail->Subject = 'Here is the subject';
$mail->Body = 'This is the HTML message body <b>in bold!</b>';
$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';
$mail->send();
echo 'Message has been sent';
} catch (Exception $e) {
echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}