lostyazilim
tr.link

PHPMailer Sınıfı İle SMTP’den Mail Gönderme

12 Mesajlar 4.217 Okunma
acebozum
tr.link

Canahm3t Canahm3t Php Developer Kullanıcı
  • Üyelik 19.07.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Php Developer
  • Konum Eskişehir
  • Ad Soyad A** İ**
  • Mesajlar 169
  • Beğeniler 2 / 14
  • Ticaret 1, (%100)
Php’de mail göndermek için iki farklı yol mevcut. Php’nin dahili olarak gelen mail() fonksiyonunu kullanmak veya SMTP üzerinden göndermek. Bunlardan ikincisi olan SMTP yoluyla gönderilen e-postaların güvenilirliği ve doğruluğu daha yüksek oluyor. E-postalarınızın spam(gereksiz) kutusuna düşmesini istemiyorsanız SMTP protokolünü kullanmanızı tavsiye ederim. SMTP’nin daha güvenilir olmasının sebebiyse SMTP ile e-posta gönderebilmek için geçerli bir mail adresinin gerekmesidir. Php’nin standart mail fonksiyonu ile yapılan e-posta gönderimlerinde e-posta adresi zorunluluk olmadığı için doğrulanması mümkün olmayan, sunucunun genel imzasına sahip e-postalar gönderilebiliyor. Bu da genellikle reklam amaçlı spam e-postaların bu yolla gönderilmesi anlamına geliyor. Dolayısıyla gönderilen e-postalar da şüpheli konumuna düşüyor. Neyse demek istediğimi anladığınızı umarak artık Php’de SMTP ile nasıl mail gönderebileceğinizi anlatmaya başlıyorum.

Adım Adım PHP Kullanarak SMTP İle Mail Gönderme İşlemi

Yazının başlığından da anlayacağınız üzere bu işlem için PHPMailer isimli php sınıfını kullanacağız. Kodlara geçmeden evvel buradan sınıfımızın son sürümünü indiriyoruz. Hangi dosyayı indirmem lazım diye tereddüt eden arkadaşlar en çok indirme sayısına sahip zip uzantılı dosyayı indirebilirler.

İndirdiğiniz arşiv dosyasından class.phpmailer.php ve class.smtp.php isimli iki dosyayı alarak projenizin bulunduğu klasöre kopyalamanız gerekiyor.

İki dosyayı kopyaladıktan sonra mail gönderim işlemini yapacağımız dosyayı oluşturuyoruz ve aşağıdaki kod ile PHPMailer sınıfını dosyaya dahil ediyoruz ve ikinci satırdaki kod ile sınıfımızı başlatıyoruz.

include "class.phpmailer.php";
$mail = new PHPMailer();


Aşağıdaki satır yardımıyla da sınıfımıza e-postamızı SMTP yoluyla göndereceğimizi söylemiş olduk.

$mail->IsSMTP();

Şimdi sıra geldi SMTP ile ilgili kullanıcı adı, parola, port gibi ayarların yapıldığı satırlara.

$mail->SMTPAuth = true;
$mail->Host = 'smtp.siteadi.com';
$mail->Port = 587;
$mail->Username = 'sizinadresiniz@siteadi.com';
$mail->Password = 'sifreniz';


E-postanın kimin adına gönderildiğini aşağıdaki satır yardımıyla ayarlayabiliyoruz.

$mail->SetFrom($mail->Username, 'Ahmet İşcan');

Yine benzer şekilde e-postayı göndereceğimiz kişinin bilgilerini de ayarlıyoruz.

$mail->AddAddress('gonderilecekadres@siteadi.com', 'gönderilecek kişinin adı soyadı');

Göndereceğiniz e-postanın karakter setini de aşağıdaki satırdaki gibi belirtebilirsiniz. Bunu UTF-8 olarak bırakmanızı tavsiye ederim.

$mail->CharSet = 'UTF-8';

Kişilerle ilgili ayarları tamamladığımıza göre şimdi de göndereceğimiz e-posta ile ilgili ayarlara geçebiliriz.

$mail->Subject = 'E-Posta Konusu';
$mail->MsgHTML('E-posta İçeriği');


Son olarak da aşağıdaki satırlar yardımıyla gönderim işlemini tamamlıyoruz. If koşulu yardımıyla gönderim başarılı/başarısız olduğu durumlarda yapılacakları da burada belirtiyoruz.

if($mail->Send()) {
echo 'E-posta başarıyla gönderildi.';
} else {
echo 'E-posta gönderilirken bir hata oluştu. Hata bilgisi aşağıdadır.
';
echo $mail->ErrorInfo;
}


Toparlayacak olursak yazdığımız kodların tamamı aşağıdaki gibi olacaktır. Yazının sonuna sık karşılaşılan problemlerle ilgili birkaç not yazacağım lütfen onları da okuyun.

include "class.phpmailer.php";
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.siteadi.com';
$mail->Port = 587;
$mail->Username = 'sizinadresiniz@siteadi.com';
$mail->Password = 'sifreniz';
$mail->SetFrom($mail->Username, 'Ahmet İşcan');
$mail->AddAddress('gonderilecekadres@siteadi.com', 'gönderilecek kişinin adı soyadı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'E-Posta Konusu';
$mail->MsgHTML('E-posta İçeriği');
if($mail->Send()) {
echo 'E-posta başarıyla gönderildi.';
} else {
echo 'E-posta gönderilirken bir hata oluştu. Hata bilgisi aşağıdadır.
';
echo $mail->ErrorInfo;
}


SMTP İle Gönderilen E-postaya Dosya Eklemek

Bazen gönderdiğiniz e-postalara dosya eklemeniz gerekebilir. Bunun için AddAttachment parametresi işinizi görecektir. Aşağıdaki kodda göreceğiniz üzere ek olarak eklenecek olan dosyanın yolunu yazmanız yeterlidir.

$mail->AddAttachment('klasor/dosya.jpg');

Birden Fazla Kişiye E-Posta Göndermek
Birden fazla kişiye e-posta göndermek için AddAddress parametresini kullanmanız yeterli olacaktır. Ama eğer CC ya da BCC olarak eklemek istiyorsanız onun için de kodunuza AddCC ya da AddBCC parametrelerini eklemeniz yeterli olacaktır. Aşağıdaki kodda üçüyle ilgili örneği de görebilirsiniz.

$mail->AddAddress('yenikisi@siteadi.com', 'Yeni Kişi');
$mail->AddCC('cckisi@siteadi.com', 'CC Kişi');
$mail->AddBCC('bcckisi@siteadi.com', 'BCC Kişi');


Gönderilen E-postanın Yanıt Adresini Değiştirmek
Son olarak da gönderdiğimiz e-postaya yapılacak yanıtlamaların başka bir e-postaya gitmesini istiyorsak onu PHPMailer sınıfına nasıl belirteceğimizi göreceğiz. AddReplyTo parametresi ile yanıt adresini belirtebilirsiniz.

$mail->AddReplyTo('yanitadresi@siteadi.com', 'Yanıt Kişi');

PHPMailer Sınıfı ve SMTP Protokolü İle İlgili Birkaç Not
Not 1: SMTP portu her zaman için 587 olmak zorunda değildir. Bazı sunucularda 25 portuna ya da başka bir porta ayarlanmış olabilir.
Not 2: SMTP ile mail gönderimini Gmail sunucuları üzerinden yapacaksanız port ayarının yapıldığı satırdan sonra $mail->SMTPSecure = ‘tls’; kodunu eklemelisiniz.
Not 3: Unutmayın ki gönderici adres kısmına ne yazarsanız yazın SMTP ile e-posta gönderirken hangi hesabın giriş bilgilerini yazarsanız e-postayı onun adına gönderecektir.
Not 4: Bir formdan gelen dosyayı e-posta ile göndermek istiyorsanız önce o dosyayı sunucunuza yüklemeli daha sonra maili gönderirken yüklediğiniz yolu PHPMailer sınıfına göstermelisiniz. Dosya yolunu gösterme işlemini yukarıda göstermiştim.

Kaynak: PHPMailer Sınıfı İle SMTP’den Mail Gönderme
atmaca18 tiwaly

kişi bu mesajı beğendi.

elektronikssl
webimgo

HakanBist HakanBist Yazık oluyor ülkeme. Kullanıcı
  • Üyelik 24.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Ankara
  • Ad Soyad H** K**
  • Mesajlar 76
  • Beğeniler 0 / 15
  • Ticaret 0, (%0)
Paylaştığınız için teşekkürler ekledim arşive.
 

 

atmaca18 atmaca18 WM Aracı Kullanıcı
  • Üyelik 28.12.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek hidroelektrik santral makinaları montaj bakım ve arıza
  • Konum Çankırı
  • Ad Soyad ** **
  • Mesajlar 114
  • Beğeniler 4 / 23
  • Ticaret 5, (%100)
peki hocam benim şöyle bir sorunum var sunucudan mail çıkışı yasak bunu phpmail ile başka bir sunucudan göndermek mümkün mü acaba
 

 

Canahm3t Canahm3t Php Developer Kullanıcı
  • Üyelik 19.07.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Php Developer
  • Konum Eskişehir
  • Ad Soyad A** İ**
  • Mesajlar 169
  • Beğeniler 2 / 14
  • Ticaret 1, (%100)

atmaca18 adlı üyeden alıntı

peki hocam benim şöyle bir sorunum var sunucudan mail çıkışı yasak bunu phpmail ile başka bir sunucudan göndermek mümkün mü acaba

Başka sunucunun phpmail özelliğini kullanman mümkün değil ama başka sunucunun smtp özelliğini kullanabilirsin. Ya da gmail smtp ile mail göndermene izin veriyor, onu kullanabilirsin.
 

 

wmaraci
wmaraci

aerdogan aerdogan Kullanıcı
  • Üyelik 28.06.2013
  • Yaş/Cinsiyet 32 / E
  • Meslek Full Stack Web Developer
  • Konum İstanbul Anadolu
  • Ad Soyad A** E**
  • Mesajlar 259
  • Beğeniler 10 / 37
  • Ticaret 7, (%100)
Hocam elinize sağlık. Fakat giden mailde türkçe karakterlerde problem var. Düzeltmek için bir öneriniz var mı?
 

 

Webayt İçerik Yönetim Sistemi
Modüler, Google Dostu ve 100+ Dil Desteği!

Serplink Sıralama Takibi
Yakında Hizmetinizde!

atmaca18 atmaca18 WM Aracı Kullanıcı
  • Üyelik 28.12.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek hidroelektrik santral makinaları montaj bakım ve arıza
  • Konum Çankırı
  • Ad Soyad ** **
  • Mesajlar 114
  • Beğeniler 4 / 23
  • Ticaret 5, (%100)

Canahm3t adlı üyeden alıntı

Başka sunucunun phpmail özelliğini kullanman mümkün değil ama başka sunucunun smtp özelliğini kullanabilirsin. Ya da gmail smtp ile mail göndermene izin veriyor, onu kullanabilirsin.


hocam gmail gunluk bir limit koymuş o limiti aşınca mail göndermiyor
gunluk 100 ile 150 mail arasında onay maili gönderiyor sitem şifre sıfırlamak içinde
mail gönderiyor phpmail yasak sunucuda smtp mailde yasak mail sorunu olmayacak diye garanti verenler sonradan kıvırmaya başlıyor sizce mail servermi kurmam gerek maddi açıdan şuan mail servere verecek para yok ne yapsam daha iyi olur
 

 

Canahm3t Canahm3t Php Developer Kullanıcı
  • Üyelik 19.07.2011
  • Yaş/Cinsiyet 34 / E
  • Meslek Php Developer
  • Konum Eskişehir
  • Ad Soyad A** İ**
  • Mesajlar 169
  • Beğeniler 2 / 14
  • Ticaret 1, (%100)

aerdogan adlı üyeden alıntı

Hocam elinize sağlık. Fakat giden mailde türkçe karakterlerde problem var. Düzeltmek için bir öneriniz var mı?


Kodları yazdığın dosyan utf-8 ve mail ayarların da utf-8 ise problem olmaması lazım normalde.

atmaca18 adlı üyeden alıntı

hocam gmail gunluk bir limit koymuş o limiti aşınca mail göndermiyor
gunluk 100 ile 150 mail arasında onay maili gönderiyor sitem şifre sıfırlamak içinde
mail gönderiyor phpmail yasak sunucuda smtp mailde yasak mail sorunu olmayacak diye garanti verenler sonradan kıvırmaya başlıyor sizce mail servermi kurmam gerek maddi açıdan şuan mail servere verecek para yok ne yapsam daha iyi olur

SMTP komple yasak olmayabilir bazen portunu değiştiriyorlar. Hosting şirketinden bilgi aldın mı konuyla ilgili? Ama komple yasaksa da SMTP Server hizmeti veren yerler var $5 ya da $10 gibi miktarlara oralardan faydalanabilirsin.
 

 

atmaca18 atmaca18 WM Aracı Kullanıcı
  • Üyelik 28.12.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek hidroelektrik santral makinaları montaj bakım ve arıza
  • Konum Çankırı
  • Ad Soyad ** **
  • Mesajlar 114
  • Beğeniler 4 / 23
  • Ticaret 5, (%100)

Canahm3t adlı üyeden alıntı

Kodları yazdığın dosyan utf-8 ve mail ayarların da utf-8 ise problem olmaması lazım normalde.


SMTP komple yasak olmayabilir bazen portunu değiştiriyorlar. Hosting şirketinden bilgi aldın mı konuyla ilgili? Ama komple yasaksa da SMTP Server hizmeti veren yerler var $5 ya da $10 gibi miktarlara oralardan faydalanabilirsin.


yilmazserver den almıştım komple yasak oldugunu söylediler
 

 

Jengawer Jengawer Tıp Öğrencisi E-Mail Onaysız
  • Üyelik 20.07.2013
  • Yaş/Cinsiyet 37 / E
  • Meslek Tıp Öğrencisi
  • Konum Ankara
  • Ad Soyad A** A**
  • Mesajlar 256
  • Beğeniler 107 / 74
  • Ticaret 20, (%100)

atmaca18 adlı üyeden alıntı

yilmazserver den almıştım komple yasak oldugunu söylediler


Ucuz hostinglerde bu tür sıkıntılar oluyor genelde.
 

 

atmaca18 atmaca18 WM Aracı Kullanıcı
  • Üyelik 28.12.2012
  • Yaş/Cinsiyet 39 / E
  • Meslek hidroelektrik santral makinaları montaj bakım ve arıza
  • Konum Çankırı
  • Ad Soyad ** **
  • Mesajlar 114
  • Beğeniler 4 / 23
  • Ticaret 5, (%100)

Jengawer adlı üyeden alıntı

Ucuz hostinglerde bu tür sıkıntılar oluyor genelde.


ucuz degil spam yuzunden yasaklamışlar mail sorunum yuzunden kullanmadıgım hosting reseller vps vds kalmadı bir süre sonra mail göndermiyor sıkıntı çıkartıyorlar
 

 

wmaraci
wmaraci
Konuyu toplam 3 kişi okuyor. (0 kullanıcı ve 3 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al