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

Centos 7 Sunucularda SSH Port Değiştirme
30 Mart 2016
Web.Config Üzerinden Özel 404 Hata Sayfası Oluşturma
5 Nisan 2016

Web sunucular üzerinde e-posta gönderimleri iyi kurgulanması ve ayarlanması gereken bir detaydır. Bu nedenle hemen tüm barındırma sağlayıcılarda olduğu gibi DomainHizmetleri paylaşımlı hosting sunucularında da SPAM tehlikesinin önüne geçmek amacıyla sadece SMTP ile doğrulanan gönderimler çalışmaktadır.

İpucu: PHPmail denilen (doğrulamasız çalışan) fonksiyon kötüye kullanıma oldukça açıktır ve engellenmiş durumdadır. Hem bulunduğunuz sunucunun hem de alan adınızın kara listeye girmesine sebep olmaktadır.

Şimdi bunun için gerekli basit birkaç adımı paylaşacağım:

Öncelikle, PHPmailer kütüphanesini buraya tıklayarak indiriniz.

ZIP içerisindeki şu 3 dosyayı, mail gönderimi yapacak sayfanın bulunduğu klasör içerisine atıyoruz:

class.phpmailer.php
class.pop3.php
class.smtp.php

Aynı ZIP içerisindeki test_mail.php dosyası aşağıdaki gibidir. Bu değişkenleri bize ait bilgilere göre düzenliyoruz:

<?php
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPDebug = 1; // Hata ayıklama değişkeni: 1 = hata ve mesaj gösterir, 2 = sadece mesaj gösterir
$mail->SMTPAuth = true; //SMTP doğrulama olmalı ve bu değer değişmemeli
$mail->SMTPSecure = ''; // Normal bağlantı için boş bırakın veya tls yazın, güvenli bağlantı kullanmak için ssl yazın
$mail->Host = "mail.alanadi.com"; // Mail sunucusunun adresi (IP de olabilir)
$mail->Port = 587; // Normal bağlantı için 587, güvenli bağlantı için 465 yazın
$mail->IsHTML(true);
$mail->SetLanguage("tr", "phpmailer/language");
$mail->CharSet  ="utf-8";
$mail->Username = "gonderen@alanadi.com"; // Gönderici adresiniz (e-posta adresiniz)
$mail->Password = "PAROLA"; // Mail adresimizin sifresi
$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ı adres
$mail->Subject = "Mesaj Basligi"; // Email konu başlığı
$mail->Body = "Mesaj icerigi ve metni"; // Mailin içeriği
if(!$mail->Send()){
  echo "Email Gönderim Hatasi: ".$mail->ErrorInfo;
} else {
  echo "Email Gonderildi";
}
?>

Böylece SMTP ile güvenilir şekilde e-postalarımızı gönderebileceğiz.

Bu makale size yardımcı oldu mu?

10
Kimler Neler Demiş?

avatar
9 Comment threads
1 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
10 Comment authors
OnurYağız EgeHakanMurat TahtacıSerkan GÜL Recent comment authors
  Subscribe  
En Yeniler Eskiler
Bildir
Furkan
Ziyaretçi
Furkan

abi proje dosyamıza 4 tanesinden eklemediğimizde değişiklik yapıyoruz kafam iyice karıştı

ugurerbil
Ziyaretçi
ugurerbil

allah rzı olsun en sonunda çalışan bir kod buldum

Timuçin Sezgin
Ziyaretçi

Mükemmel bişey ne zamandır böyle bir şey arıyordum sayenizde çok faydalı bir konuyu öğrenmiş oldum teşekkürler.

Bahtiyar
Ziyaretçi
Bahtiyar

Çok teşekkür ederiz..

bay busy
Ziyaretçi
bay busy

Eyvallah teşekkürler.

Serkan GÜL
Ziyaretçi
Serkan GÜL

Bu şekilde bir hata alıyorum. Çözümü ne olabilir?

Failed to connect to server: php_network_getaddresses: getaddrinfo failed: Name or service not known (0)
SMTP Error: Could not connect to SMTP host.

Hakan
Ziyaretçi
Hakan

Merhaba;
Bu kodlarla Subject ve Body gönderebiliyoruz. Bunların dışında gönderen adı ve email adreside gelsin istiyorum. Yaptığım form 4 bölüm fakat ne yaparsam yapayım sadece 2 sini gönderebiliyorum. Yardımcı olabilir misiniz

Yağız Ege
Ziyaretçi
Yağız Ege

SMTP -> ERROR: EHLO not accepted from server: F
SMTP -> ERROR: HELO not accepted from server:
SMTP -> NOTICE: EOF caught while checking if connectedLanguage string failed to load: tls Email Gönderim Hatasi: Language string failed to load: tls

bu nasıl düzeltilir

Onur
Ziyaretçi
Onur

Arkadaşım merhaba, bilgi için teşekkür ederim. Kullandım info’ma mail düştü ancak mail boş geliyor.
‘kimden’ kısmında ‘Adınız Soyadınız’ yazıyor. Açıklama yazısıda yok. Neyi eksik yapmış olabilirim?

Show Buttons
Hide Buttons