PHP ve SMTP kullanarak Mail göndermek. ( phpmailer )

PHP ve MySQL ile ilgili yardım taleplerinizi paylaşabilirsiniz.
Cevapla
Kullanıcı avatarı
Gökhan
Deneyimli Üye
Deneyimli Üye
Mesajlar: 390
Kayıt: 11 Şub 2009, 22:57

PHP ve SMTP kullanarak Mail göndermek. ( phpmailer )

Mesaj gönderen Gökhan » 12 Tem 2010, 11:51

Php ile yapmış olduğumuz sayfalarımızda, özellikle iletişim, sipariş vb. formları, mail adresimize göndermek isteyebiliriz, ya da üyelerimize aktivasyon ya da şifre hatırlatma gibi bir takım mailler göndermek isteyebiliriz.

Bunun için php dosyamız ile mail gönderebilmemiz gerekir, php fonksiyonları arasında mail() fonksiyonu ile bu işi görebiliriz ancak, artık bir çok sunucu mail gönderimi için SMTP yetkilendirmesi istiyor, yani PHP ile SMTP üzerinden ve şifremiz ile gönderim yapmamız gerekyor.

PhpMailer class dosyaları ile bu işi kolayca yapabiliyoruz, aşağıda bu işlemler için basit bir örnek vereceğim ancak öncelikle class dosyalarını indirmemiz gerekiyor.

Site : http://phpmailer.worxware.com/ adresinden ya da
PHPMailer_v5.1.tar.gz
buraya tıklayarak class dosyalarını indirebilirsiniz. (Yalnızca PHP 5 ve üzeri versiyonlar için. Daha düşük versiyonlar için yukarıdaki siteyi ziyaret edin.)

İndirdiğiniz paketi açtığınızda içeride bulunan class.phpmailer.php ve class.smtp.php dosyalarını mail göndereceğiniz dosyanızın bulunduğu klasöre kopyalamanız gerekiyor.

Ayrıca class.phpmailer.php içerisindeki $Sendmail = '/usr/sbin/sendmail'; kısmını kendi sunucunuzunda geçerli olan yol ile düzenlemeniz gerekebilir. Bunun dışındaki diğer ayarları da kontrol etmenizde fayda olabilir.

mail gönderecek olan php dosyamızın içine class.phpmailer.php dosyasını çağıracağız, aşağıdaki örneği basit bir mail için veriyorum.

Kod: Tümünü seç


require("class.phpmailer.php"); // class dosyasını dahil ediyoruz, class.smtp.php dosyasını buradan çağırmasak da bu dosya ile aynı klasörde bulunduğuna emin olun.

$mail = new PHPMailer();

$mail->IsSMTP();                            // SMTP ile göndereceğiz
$mail->Host     = "SUNUCU ADRESİ";          // SMTP sunucu adresinizi buraya yazın.
$mail->SMTPAuth = true;                     // SMTP yetkilendirmesini gerekli kıldık
$mail->Username = "SMPT kullanıcı adınız";  // SMTP kullanıcı adınızı yazın, çoğunlukla sunucuda geçerli bir mail adresinizdir.
$mail->Password = "ŞİFRENİZ";               // Mail şifreniz.

$mail->From     = "Mail adresinizi Girin";  // Bu kısma, mailin gönderileceği mail adresinizi girin.

$mail->Fromname = "Site İsminiz";           //Alıcı kimden kısmında buradaki ismi görüyor, örnek olarak buraya sitenizin ismini girebilirsiniz.

$mail->AddAddress("Alıcı ADRESİ");          // Bu kısma alıcının email adresini girmelisiniz.

$mail->Subject  =  "Mailinizin Konusu";     // Buraya mailinizin konusunu yazın, örnek: Şifre Hatırlatma, ya da Yeni Sipariş gibi


$mail->Body     =  "Mail İçeriği";          // Bu kısma mail içeriğini girin. Daha üstte mail içeriğini bir değişkene eşitleyip, bu kısmı o değişkene de eşitleyebilirsiniz, ayrıca alt satırlar için \n kullanabilirisiniz.


$mail->Send();  // ve maili gönderiyoruz.

Yukarıdaki uygulamayı, kendi ihtiyacınız doğrultusunda düzenleyebilirsiniz, örnek olarak veritabanınızdaki tüm üyelerinize mesaj göndermek istiyorsunuz, bu durumda $mail->AddAddress("Alıcı ADRESİ"); kısmını veritabanınızın
üyeler tablosundan çekerek bir döngü içerisinden geçirebilirsiniz,

Örnek verecek olursam, üyelerinizi phpindir_uyeler tablosunda ve mail adresi kısmını da eposta alanında tuttuğumuzu varsayalım.

Bu durumda $mail->AddAddress("Alıcı ADRESİ"); kısmını şu şekilde oluşturabiliriz

Kod: Tümünü seç

$sql   = "select eposta from phpindir_uyeler";
$sonuc = mysql_query($sql);
while($satir=mysql_fetch_object($sonuc)){
$mail->AddAddress("$satir->eposta");
}
Önemli Not : Yukarıdaki gibi bir gönderimde, tüm alıcılar, birbirlerinin mail adreslerini göreceklerdir.

Eğer, mail adreslerini gizlemek istiyorsak, maili kendimize gönderip, BCC kısmına döngü oluşturmalıyız, bunun için ise;

Kod: Tümünü seç

$mail->AddAddress("KENDİ MAİLİMİZ");  // buraya kendi mail adresinizi yazabilirsiniz.
$sql   = "select eposta from phpindir_uyeler";
$sonuc = mysql_query($sql);
while($satir=mysql_fetch_object($sonuc)){
$mail->AddBCC("$satir->eposta");
}
Bu örnekte ise, tüm alıcılar, KİME kısmında sizin mail adresinizi görecek ancak kimse başka bir kullanıcınızın mail adresini görmeyecektir.

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: PHP ve SMTP kullanarak Mail göndermek. ( phpmailer )

Mesaj gönderen Özgür » 24 Oca 2013, 14:35

Kod: Tümünü seç

<!-- dosya ekle burada -->
                              <form name="form1" enctype="multipart/form-data" action="<? echo $PHP_SELF;?>" method="post"><input type="file" name="dosya"><br><input type="submit" name="gonder" value="Gönder"></form>
<?if(@$gonder == "Gönder") {copy ( $dosya, $dosya_name ) or die ( "Dosya Kopyalanamiyor." );echo $dosya_name;echo "<br>";echo $dosya_size . " Kb";echo "<br>";echo $dosya_type;echo "<br>";echo "<a href=\"$dosya_name\">Tiklayiniz.</a>";}?>
                              <!-- dosya ekle bitti -->
İlave olarak bu satır gerekecek doğru mu? Yukardaki form ile dosyayı alıyorum, aldığım dosyanın ismini de bir string'e aktarmam gerekiyor. $dosya_name desem görür mü acaba?

Özgür
Deneyimli Üye
Deneyimli Üye
Mesajlar: 352
Kayıt: 16 Şub 2009, 01:16

Re: PHP ve SMTP kullanarak Mail göndermek. ( phpmailer )

Mesaj gönderen Özgür » 24 Oca 2013, 17:18

Kod: Tümünü seç

<form name="form1" enctype="multipart/form-data" action="" method="post">
Bu şekilde de kullanılabiliyor.

Cevapla

Kimler çevrimiçi

Bu forumu görüntüleyen kullanıcılar: Hiç bir kayıtlı kullanıcı yok ve 2 misafir