SMTP; Simple Mail Transfer Protocol'ün kısaltmasıdır. Bu kısaltmanın açılımı Türkçe'de Elektronik Posta Gönderme Protokolü anlamına gelmekte.
Öncelikle şunu belirtmeliyim ki bir çok hosting firmasında php'nin mail() fonksiyonu pasif durumdadır. Nedenini soracak olursanız mail() fonksiyonu ile atılan mailler çoğunlukla e-posta sunucuları tarafından spam olarak algılanır ve bu maili gönderen sunucu IP'leri kara listeye dahil edilir. Yani durum böyle olmasaydı mail() fonksiyonuyla mail gönderebilirdik. Php'nin mail() fonksiyonu işimize yaramadığından bu yazımızda alternatif bir yöntem olan SMTP üzerinden mail göndermeyi öğreneceğiz.
SMTP; Simple Mail Transfer Protocol'ün kısaltmasıdır. Bu kısaltmanın açılımı Türkçe'de Elektronik Posta Gönderme Protokolü anlamına gelmekte. SMTP protokolü şeması;
Gönderen --> SMTP --> Internet --> POP3 --> Alıcı
şeklinde olup gönderen tarafından alıcıya gönderilen mailin doğrulanması temeline dayanmaktadır. Yani bir nevi postacı ile mektup göndermeye benziyor. Bu yöntemi kullanmamız için PHPMailer kütüphanesine ihtiyacımız var. PHPMailer kütüphanesinin en güncel sürümüne buradan ulaşabilirsiniz. Şimdi gelelim oluşturduğumuz form aracılığı ile mail göndermeye. İlk önce mail gönderme formu ile PHPMailer kütüphanesi dosyalarını (class.phpmailer.php, class.smtp.php ve class.pop3.php) aynı dizine yüklüyoruz, ardından aşağıdaki kodları mail formumuza entegre ediyoruz.
IsSMTP(); $mail->SMTPDebug = 1; // 1 = hata ve mesaj, 2 = sadece mesaj $mail->SMTPAuth = true; // burası hep true değerinde olmalı. $mail->SMTPSecure = 'ssl'; // ssl = güvenli baglanti, tls = normal baglanti $mail->Host = "mail.sunucuadresi.com"; // mail sunucusunun SMTP adresi. $mail->Port = 465; // 465 = ssl, 587 = tls $mail->IsHTML(true); // true = HTML mail içeriği, false = text mail içeriği $mail->SetLanguage("tr", "phpmailer/language"); // mail içeriğinin dili. $mail->CharSet ="utf-8"; // Türkçe karakterler için charset utf-8 olarak seçilmelidir. $mail->Username = "kullanıcıadı@suncuadresi.com"; // mail adresimiz. $mail->Password = "şifre"; // mail adresimizin şifresi. $mail->SetFrom("kullanıcıadı@suncuadresi.com", "Kullanıcı Adı"); // Alıcının göreceği gönderen bilgileri. $mail->AddAddress("alıcı@sunucuadresi.com"); // Alıcının mail adresi. $mail->Subject = "Konu"; // mail konusu. $mail->Body = "Merhabalar, nasılsınız?"; // mail içeriği. if(!$mail->Send()){ echo "Hata: ".$mail->ErrorInfo; } else { echo "Mail gönderildi."; } ?>SMTP'yi dilerseniz mevcut hosting firmanızın size tahsis ettiği mail sunucunuz üzerinden dilerseniz ücretsiz olarak bu hizmeti sağlayan Gmail, Yahoo, Yandex, Mail.com, Mynet gibi mail sunucuları aracılığı ile kullanabilirsiniz. Biz bunların arasından en popüler olan Gmail için SMTP ayarlarını görelim;
$mail->SMTPSecure = 'ssl'; $mail->Host = 'smtp.gmail.com'; $mail->Port = 465;