İnsanoğlu hala tüm bilgisayarların en alışılmadık olanıdır. Jhon F.Kennedy
30 Ekim 2016 Pazar
PHP ile SMTP Üzerinden Mail Göndermek
PHP Üzerinden SMTP E-Mail Gönderme:
- Bu yazıda php kodu ile SMTP mail nasıl gönderilebileceğini aşağıdaki kod üzerinden anlatacağım. PHP üzerinden mail göndermek için aşağıdaki kodda görüleceği gibi PHPMailer adlı API'yi kullanıyorum. Bahsettiğim php kütüphanesinin son sürümüne buradan ulaşmanız mümkündür. Aşağıdaki kodda ilgili değişiklikleri yaparak kendi bilgisayarınızda derlediğinizde koda ekleyeceğiniz mail hesabına e-mail gittiğini göreceksiniz.
<?php
//phpinfo();-- ile local pc veya php hangi bilgisayar üzerine kurulu ise php hakkındaki teknik bilgilere ulaşmamız mümkündür. Üzerinde çalışıyor olduğumuz PHP'nin sürümü modülleri vs..
date_default_timezone_set('Etc/UTC');
require 'phpmailer/PHPMailerAutoload.php'; -- yukarıdaki linkten indirmiş olduğumuz phpmailer kütüphanesini kendi uygulamamıza şu şekilde import etmemiz gerekmektedir. Burada dikkat etmemiz gereken tek şey kütüphanenin yer aldığı klasör dizinidir.
$mail = new PHPMailer; --PHPMailer adında yeni bir obje tanımlıyoruz.
$mail->IsSMTP(); -- SMTP mail server protokolünün kullanılacağını şu şekilde belirliyoruz.
$mail->SMTPDebug = 0; -- mail göndermede veya kodun çalışıp çalışmaması durumu için hata mesajının alınacağına dair 0 yerine 1, 2, 3 veya 4 yazdığımızda detaylı şekilde SMTP dönütü alabiliriz. Benim kod çalıştığına göre herhangi bir hata mesajı almaya gerek kalmadığı için 0 yazarak o özelliği kapattım.
$mail->SMTPOptions = array( -- SMTP güvenlik doğrulama ayarları
'ssl' => array(
'verify_peer' => false,
'verify_peer_name' => false,
'allow_self_signed' => true
)
);
$mail->Host = 'mail.dixot.com'; --- buraya mail göndermede kullanacağınız mail serverin sunucu adresini yazmanız gerekmektedir.
$mail->SMTPAuth = true;
$mail->Username = 'test@dixot.com'; --- buraya kullandığınız mail server üzerinden almış olduğunuz mail hesabınızı yazmanız gerekmektedir.
$mail->Password = 'sifre'; -- buraya kullandığınız mail hesabınızın şifresini girmeniz gerekmektedir.
$mail->SMTPSecure = 'ssl'; -- burayı 'ssl' veya 'tls' şeklinde ayarlayabilirsiniz, 'ssl' şekilnde ayarlamanız taktirde kullandığınız mail server üzerinden güvenli bağlantı yapacağınızı söylemiş olursunuz ki ona göre port ayarlaması yapmanız gerekecektir. Örneğin 'ssl' bağlantı için aşağıda görüldüğü gibi portu 465 olarak ayarladım, oysa 'tls' bağlantılar için portun 587 veya 25 olması gerekirdi, port ayarları kullandığınız mail server üzerinde hangi portların açık olduğu ile ilgilidir. Örneğin, SMTP.gmail.com mail serverini kullanıyorsanız buradan port ayarlarına bakabilirsiniz.
$mail->Port = 465;
$mail->SMTPKeepAlive = true;
$mail->From='kimden_gidecek@mail.com'; -- buraya yazdığınız mail adresi mailin hangi mail adresinden gittiğini gösterir.
$mail->FromName='kimden'; -- mailin kim tarafından gönderildiğini gösterir.
$mail->AddAddress('kime_gidecek@mail.com'); -- mailin kime gideceğinin mail adresini buraya yazıyoruz.
$mail->IsHTML(true);
$mail->SetLanguage("tr", "phpmailer/language");
$mail->CharSet ="utf-8"; -- gidecek mailin türkçe karakter desteğini sağlaması için utf-8 ayarlaması
$mail->Encoding="base64";
$mail->Subject = 'Mesaj Konusu';
--- mesajın içeriğini oluşturan bölüm ağaşıdaki gibidir, buraya html kod ile istediğimiz şekilde mesaj gövdesini oluşturabilmemiz mümkündür.
$content = '
<meta http-equiv="Content-Type" content="text/html; charset=windows-1254">
<meta http-equiv="Content-Language" content="tr" />
<div style="background: #eee; padding: 10px; font-size: 14px; width: auto;">Bu bir test e-postasıdır, Türkçe karakter çözümünün kontrolü için gönderilmiş deneme bir maildir..</div>';
$mail->MsgHTML($content);
--- mesajın ilgili adrese gönderilip gönderilmediğine dair dönüt almak için aşağıdaki kodu yazıyoruz.
if(!$mail->send()) {
echo 'Mesaj gonderme basarisiz oldu..!';
echo 'Mailer Error: ' .$mail->ErrorInfo;
} else {
echo 'Mesaj basariyla gonderildi..';
}
?>
bu kadar, umarım işinize yaramıştır. Başarılar dilerim.
Kaydol:
Kayıt Yorumları (Atom)
Hiç yorum yok:
Yorum Gönder