PHP Mail ve PHPMailer ile Mail Göndermek

Bir çok Hosting firmasında php mail() fonksiyonu kapalı durumdadır. Bu fonksiyonun kapalı tutulmasının nedeni, php mail() fonksiyonunda hiçbir doğrulama olmadan direk olarak mail gönderilebilmesidir. Bu da mailin direkt olarak spam olarak algılanıp gereksiz kutusuna düşmesine neden olur. Sürekli spam maillerin gönderildiği ip adresleri doğal olarak Gmail, Hotmail, Yandex ve daha birçok büyük mail sağlayıcıları tarafından kara listeye alınır.

Şimdi Php üzerinden Smtp bağlantısı yaparak nasıl mail gönderilir göreceğiz. Bunun için PHPMailer kütüphanesini kullanacağız.

SMTP Nedir?

Kısaca İngilizce "Simple Mail Transfer Protocol" (Basit Mail Aktarım Protokolü) ifadesinin baş harfleri ile oluşturulmuş bir kısaltmadır ve dünyada şuan aktif kullanılan mail gönderme işlemlerini düzenleyen endüstri standardı protokolüdür.

Sadece e-posta yollamak için kullanılan bu protokolde, istemci bilgisayar SMTP sunucusuna bağlanarak gerekli kimlik bilgilerini gönderir, sunucunun onay vermesi halinde gerekli e-postayı sunucuya iletir ve bağlantıyı sonlandırır.

Bir SMTP Sunucusunun ana görevi, bir e-posta göndericisi ile bir e-posta alıcısı arasında giden postalar için bir geçiş görevi görmektir. SMTP Sunucusunun aslında bir sunucu değil, sadece e-postaların gönderilmesini ve alınmasını sağlayan bir uygulama olduğunu belirtmek önemlidir.

Gmail / Yahoo / Outlook Varken Neden SMTP Kullanalım?

Çoğumuzun günlük kişisel ve iş e-postalarımızı göndermek için Gmail, Yahoo, Outlook vb. Gibi web arayüzlerini kullandığımız doğrudur. Ancak anlamamız gereken bir şey, tüm bu platformların bire bir manuel iletişim göndermek için oluşturulmuş ve ölçek için tasarlanmamış olmasıdır.

SMTP Sunucusu Kullanarak E-posta Gönderme

SMTP sunucunuzu kurabilir veya e-posta istemcinizi SMTP Sunucu Sağlayıcılarından birine bağlayabilir ve e-postaları doğrudan teslim etmek için izin verebilirsiniz.

Bazılarınız kendi SMTP sunucunuzu kurmanın maliyetten tasarruf edebileceğini düşünebilir. Ama bir düşünün, gerçekten öyle değil. Çünkü SMTP geçiş sunucularının her biri, çeşitli ISS'lerde(İnternet Servis Sağlayıcısı) teslim edebileceği e-posta sayısında bir sınırlamaya sahip olacaktır.

Milyonlarca e-postayı ölçeklendirmenize ve göndermenize yardımcı olan bir kod yazsanız bile, bazen ISS'ler, bir seferde bir gönderici tarafından gönderilen çok sayıda e-posta nedeniyle bu e-postaları Spam olarak düşünerek engellemeye başlayacaktır.

Bu nedenle, altyapıyı kendiniz ele almak yerine, iyi bir ESP'yi(e-posta Servis Sağlayıcısı) tercih edebilirsiniz. e-posta açılışları, tıklamalar, geri dönmeler, spam şikayetleri ve diğer önemli etkinlikler gibi tüm kullanıcı etkinliklerini izlemenize yardımcı olabilir.

Öte yandan, iyi bir e-posta Servis Sağlayıcısı (ESP) seçerseniz, milyarlarca e-posta gönderebilir, e-posta dağıtım uzmanlığı edinebilir ve yüksek bir IP itibarı oluşturabilirsiniz. Doğru ESP'yi seçmek çok önemlidir. e-postaları toplu olarak gönderirken, e-postalarınızın performansını ölçmek iyidir çünkü bu, gönderen alan adınızın itibarını artırmaya yardımcı olacaktır.

SMTP Portu Kaçtır?

SMTP protokolü, 25, 465 ve 587 olmak üzere 3 farklı port ve iki farklı güvenlik katmanı (SSL veya TLS) kullanılmaktatır. Genellikle istemci ve gönderen sunucu arasında SMTP Submission olarak isimlendirilen 587 numaralı port ve TLS güvenlik katmanı en yaygın kullanılanıdır. eposta gönderen ve alan sunucular arasında ise 25 nolu port standart olarak kullanılmaktadır. İki sunucu arasında eposta iletimi güvenli olması için yapılacaksa SSL veya TLS 465 nolu portu kullanmaktadır. İstemci ile gönderen sunucu arasında neden 587 kullanılıyor diye bir soru sorabilirsiniz. Yıllar önce Türkiye’deki servis sağlayıcılar spam ile mücadelede ADSL için kullanılan IP bloklarında 25 nolu portu kapatma kararı aldığı için istemci ile sunucu arasında 587 nolu port kullanılmaktadır. Bu uygulamadan sonra hızla Türkiye spam eposta gönderen ülkeler içerisinde aniden sıralama kaybetmiş ve bu sorunu çözmüştür.

PHP MAİLLER NEDİR?

PHPMailer bir kod kütüphanesidir ve bir web sunucusundan PHP kodu ile e-postaları güvenli ve kolay bir şekilde göndermek için kullanılır. Doğrudan PHP koduyla e-posta göndermek için SMTP standart protokolüne ve spam gönderilmesi için e-posta yerleştirmeyle ilgili sorunlara ve güvenlik açıklarına çözüm gerekir. PHPMailer e-posta gönderme işlemini basitleştirir ve kullanımı çok kolaydır. PHPMailler indirin

Kendi Sitenizden eposta Gönderme


<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;


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

$mail = new PHPMailer(true);


$mail->CharSet = 'UTF-8';
$mail->SMTPDebug = 0; // debug on - off
$mail->isSMTP(); 
$mail->Host = 'mail.alanadınız.com'; //SMTP sunucusu örnek : mail.alanadi.com
$mail->SMTPAuth = true; // SMTP Doğrulama
$mail->Username = 'isim@alanadiniz.com'; // Mail kullanıcı adı
$mail->Password = 'Şifreniz'; // Mail şifresi
$mail->SMTPSecure = 'tls'; // Şifreleme
$mail->Port = 587; // SMTP Port
$mail->SMTPOptions = array(
 'ssl' => array(
 'verify_peer' => false,
 'verify_peer_name' => false,
 'allow_self_signed' => true
 )
);

//Alıcılar
$mail->setfrom('isim@alanadiniz.com', 'isim');///Mail attigimizda yazacak isim
$mail->addAddress("abc@domain.com"); //Gönderilecek mail adresi gir.
$mail->addReplyTo("abc@domain.com"); //Cevap verilecek mail adres gir.

 //İçerik
 $mail->isHTML(true);
 $mail->Subject = 'Deneme'; //Mail Başlığı
 $mail->Body = "<h1>merhaba iyi günler</h1> 
                <p>konu php mail gönderme</p>";//Mailin içeriği

if(!$mail->Send()){
echo "Mailer Error: ".$mail->ErrorInfo;
} else {
echo "Mesaj gonderildi";
}

?>	

Yukarıdaki kodlar eviniz veya işyerinde ki localhostdan da çalıştırabilirsiniz.

Yandex Smtp 'den Mail Gönderme




<?php

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

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

$mail = new PHPMailer(true);

$mail->IsSMTP();
  $mail->SMTPDebug = 1; 
  $mail->SMTPAuth = true;
  $mail->SMTPSecure = 'tls';
  $mail->Host = 'smtp.yandex.com';
  $mail->Port = 587;
  $mail->IsHTML(true);
  $mail->SetLanguage("tr", "phpmailer/language");
  $mail->CharSet ="utf-8";
  $mail->Username = "isim@yandex.com"; //yandex mail adresi
  $mail->Password = "Şifre";

  $mail->SetFrom("isim@yandex.com", "isim"); // Mail attığımızda yazacak isim
  $mail->AddAddress("isim@domain.com"); // Maili gondereceğimiz kişi/alıcı
  
  $mail->Subject = "php dersi"; // Konu başlığı
  $mail->Body = "<h1>merhaba iyi günler</h1>
                 <p>konu php mail gönderme</p>"; // Mailin içeriği
  if ($mail->send()) {
  echo 'Mesaj Gönderildi';
} else {
  echo 'Gönderilmedi: ' . $mail->ErrorInfo;
}

?>

Gmail Smtp Ayarları:

Sadece stmp ayarını değiştirerek kullanabilirsiniz.


$mail->Host = 'smtp.gmail.com';

Gmail için port değerini değiştirerek kullanılabilir. Yukarıdaki ilgili yerleri değiştirin.


$mail->SMTPSecure = 'ssl';

$mail->Host = 'smtp.gmail.com';

$mail->Port = 465;

Google üzerinden mektup göndermenin bir uyarısı vardır: Google hesabınızdaki güvenilir olmayan uygulamalara erişime izin vermeniz gerekir. Bunu yapmak için, https://myaccount.google.com hesabınıza giriş yapmanız , güvenlik kısmında, "Daha az güvenli uygulama erişimi" bölümüne gitmeniz ve orada "İzin Verildi" bölümüne geçmeniz gerekir.


php mailler

Bu şablonu kendinize göre modifiye ederek PHP Smtp mail gönderme işlemini sorunsuz bir şekilde yapabilirsiniz. Eğer birden fazla kişiye bir defada mail göndermek istiyorsanız şu şekilde bir kullanım yapabilirsiniz.


$mail->AddAddress('EPOSTA_ADRESİ', 'Ad Soyad');

$mail->AddAddress('EPOSTA_ADRESİ', 'Ad Soyad');

Posta listesine posta göndermek için bu yöntemi kullanmanızı önermiyoruz! e-postanız her alıcısı, TÜM alıcıların listesini görecek ve daha sonra onu istediği gibi kullanabilecektir. Daha sonra mektupları posta listesine nasıl düzgün bir şekilde göndereceğinizi anlatacağız.

Karbon Kopya Alıcıları Ekle (CC)


AddCC işlevini kullanarak, önceki örneklerde olduğu gibi çoğaltma alıcıları ekleyebilirsiniz.


$mailer->AddCC('isim1@domain.com', 'Ad Soyad');

// Birden fazla eklemeniz gerekiyorsa, bu komutu tekrarlamanız yeterlidir!

$mailer->AddCC('isim2@domain.com', 'Ad Soyad');
$mailer->AddCC('isim3@domain.com', 'Ad Soyad'); 

Görünmeyen karbon kopya (BCC) alıcıları ekleme


Görünmez alıcılar veya BCC'ler aşağıdaki işlev kullanılarak eklenebilir:


$mailer->AddBCC('isim1@domain.com', 'Ad Soyad');

// Birden fazla BCC eklemeniz gerekiyorsa, devam edin!
$mailer->AddBCC('isim2@domain.com', 'Ad Soyad');
$mailer->AddBCC('isim3@domain.com', 'Ad Soyad');

Okundu Onayı Görmek


Mektubunuzu okuyan kişiden okundu onayı istemek istiyorsanız, aşağıdaki komutu yazın.


$mailer->ConfirmReadingTo = 'isim@domainadı.com';

Bir e-postaya Dosya Eklemek


PHPMailer kullanıyorsanız, bir e-postaya dosya eklemek çok kolay bir iştir. Adresleri eklediğiniz şekilde onları e-posta'ya eklemeniz yeterlidir. İşte bir örnek:


$mailer->AddAttachment('depo/file.zip', 'file.zip');

Dosyanın yolu, tabii ki, diskteki dosyanın tam yolu, dosya adı eklemek istediğiniz dosyanın adıdır, kodlama varsayılan olarak base64'tür, başlık türü göndermek istediğiniz başlık türüdür.

Cevaplamak İçin Başka eposta Vermek


Gönderilmiş olan epostayı alan kullanıcı epostayı yanıtlamak isterse bu epostaya değil de başka epostaya yanıt verilmesi isteniyorsa addReplyTo fonksiyonu kullanılmalı. Bu fonksiyonu birden fazla sayıda kullanabiliriz.


$mail->addReplyTo('gonderenmailadresi2@domainadı.com', 'Ad Soyad');

Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

2503

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.