Php ile Smtp Mail Göndermek

ANASAYFA > BILGI BANKASI > Php ile Smtp Mail Göndermek
# / 2014-09-24
Php ile Smtp Mail Göndermek

Bir çok Hosting firmasında olduğu gibi bizim firmamızda da php mail() fonksiyonu kapalı durumdadır. Bu fonksiyonun kapalı tutulmasının nedeni, php mail() fonksiyonunda hiçbir doğrulama olmadan direk olarak mail gönderilebilmesidir. Bu da mailin direkt olarak spam olarak algılanıp gereksiz kutusuna düşmesine neden olur. Fazla gönderimlerde de sunucu ip adresi karalisteye girer.


Şimdi Php üzerinden Smtp bağlantısı yaparak nasıl mail gönderilir göreceğiz. Bunun için PHPMailer kütüphanesini kullanacağız.


PHPMailer kütüphanesini buradan indirebilirsiniz.


class.phpmailer.php, class.smtp.php ve class.pop3.php dosyalarını mail formumuz ile aynı dizine atıyoruz.


Mail formumuzun kodları:


IsSMTP();
$mail->SMTPDebug = 1; // hata ayiklama: 1 = hata ve mesaj, 2 = sadece mesaj
$mail->SMTPAuth = true;
$mail->SMTPSecure = ‘ssl’; // Güvenli baglanti icin ssl normal baglanti icin tls
$mail->Host = “mail.siteismi.com”; // Mail sunucusuna ismi
$mail->Port = 465; // Gucenli baglanti icin 465 Normal baglanti icin 587
$mail->IsHTML(true);
$mail->SetLanguage(“tr”, “phpmailer/language”);
$mail->CharSet =“utf-8”;
$mail->Username = “isim@siteismi.com”; // Mail adresimizin kullanicı adi
$mail->Password = “PASSWORD”; // Mail adresimizin sifresi
$mail->SetFrom(“isim@siteismi.com”, “Isim”); // Mail attigimizda gorulecek ismimiz
$mail->AddAddress(“ahmetmakal@msn.com”); // Maili gonderecegimiz kisi yani alici
$mail->Subject = “Mesaj Basligi”; // Konu basligi
$mail->Body = “Mesaj icerigi”; // Mailin icerigi
if(!$mail->Send()){
echo “Mailer Error: “.$mail->ErrorInfo;
} else {
echo “Mesaj gonderildi”;
}
?>

Doldurulması gereken kısımları kodların arkasında yazdım.


Şimdi ücretsiz mail hizmeti veren Gmail ve Yandex için gereken ayarları görelim.


Yandex Smtp Ayarları:


$mail->SMTPSecure = ‘tls’;
$mail->Host = ‘smtp.yandex.com’;
$mail->Port = 587;

Gmail Smtp Ayarları:


$mail->SMTPSecure = ‘ssl’;
$mail->Host = ‘smtp.gmail.com’;
$mail->Port = 465;

Hazır Scriptler İçin Smtp Mail Ayarları:


Gelelim hazır yazılımlar için Smtp ayarlarının nasıl yapılması gerektiğine. Hazır yazılımların bazılarında PHPMailer kütüphanesini bulunur ve arkada çalışır. Admin arayüzünden bu ayarlar yapılır. Örnek olarak bazı yazılımlardaki ayarları aşağıda iletiyorum.


Wordpress için WP Mail SMTP eklentisini kurmamız gerekiyor.
Ayarlar > Email bölümünden aşağıdaki ayarları uygulayınız.
From Email: isim@siteismi.com
From Name: İsim
Mailer: Send all WordPress emails via SMTP.
SMTP Host: localhost veya sunucu hostname’si girilmelidir. (sunucu hostname’sini tarafımızdan öğrenebilirsiniz)
SMTP Port: 465
Encryption: Use SSL encryption.
Authentication: Yes: Use SMTP authentication.
Username: isim@siteismi.com
Password: mailsifresi


vBulletin İçin Smtp Ayarları:
vBulletin Seçenekler > E-Mail ayarları
Buradan Emailleri SMTP-Serveri aracılığı ile gönder seçiyoruz


SMTP-Serveri: mail.siteadresiniz.com
SMTP Portu: 465
SMTP Kullanıcı Adı: isim@siteismi.com
SMTP Şifresi: Email adresinizin şifresi
SMTP-Serverine garantili bağlanma: SSL


SMF İçin Smtp Ayarları:
Ayarlara ulaşabilmek için Yönetim Masası > Bakim > E=Posta kısmına giriyoruz.
E-Posta türü: SMTP
SMTP sunucusu: ssl://localhost yada ssl://mail.siteadresiniz.com
SMTP bağlantı noktası: 465
SMTP kullanıcı adı: isim@siteismi.com
SMTP şifresi: Email adresinizin şifresi


OpenCart İçin Smtp Ayarları:
Ayarlara ulaşabilmek için System > Settings > Mail kısmına giriyoruz.
Mail Protocol: SMTP
SMTP Host: ssl://localhost yada ssl://mail.siteadresiniz.com
SMTP Username: isim@siteismi.com
SMTP Password: Email adresinizin şifresi
SMTP Port: 465


Diğer yazılımlar için de aynı ayarları yaparak Smtp ile mail gönderimi yapabilirsiniz.

Avatar
Abdullah Altunbaş Teknik Şef
Netinternet de Teknik Birim Şefi olarak 2011 yılından itibaren çalışmaktayım.
Yorumlar
Avatar
mehmet 7 yıl önce

beyler smpt mail gonderme degisti bu sekilde bu dosyanında aynı dizinde olması gerekiyor ve sayfaya bunu dahil ediceksiniz artık

require ‘PHPMailerAutoload.php’; aynı zamanda yukardaki kodlarda bu sekilde deyil de IsSMTP(); yani bu sekilde yapılcak $mail->isSMTP(); ve basınada böle eklenmesi gerekiyor $mail = new PHPMailer;

bu sekilde duzeltin

$mail = new PHPMailer;

//$mail->SMTPDebug = 3; // Enable verbose debug output

$mail->isSMTP();

Avatar
SiberFilm İzle 7 yıl önce

Merhaba arkadaşlar, SMTP den mail göndermek için websitemde şu kodu kullanıyorum. Fakat ADDAddress yazan yerin karşısına aşağıdaki gibi mail adresi yazdığımda mail gönderiliyor ama benim istediğim formu dolduran kişinin mail adresine otomatik gitmesi… Bunu nasıl yapacağız… Yani ben oraya her üyenin mail adresini yazamam. Formu dolduran kim ise onun mail adresine gitmeli.. Bu nasıl oalcak.. Teşekkürler…

if ( $_POST ){

$adsoyad = htmlspecialchars(trim($_POST[‘eposta’]));
$eposta = htmlspecialchars(trim($_POST[‘eposta’]));
$mesaj = htmlspecialchars(trim($_POST[‘mesaj’]));

include ‘class.phpmailer.php’;
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = ‘smtp.gmail.com’;
$mail->Port = 587;
$mail->SMTPSecure = ‘tls’;
$mail->Username = ‘xxxxxxx@gmail.com’;
$mail->Password = ‘şifre’;
$mail->SetFrom($mail->Username, ‘Tayfun Erbilen’);
$mail->AddAddress(‘oxxxxxma@yandex.com’, ‘ali ali’);
$mail->CharSet = ‘UTF-8’;
$mail->Subject = ‘E-POSTA KONUSU’;
$content = ‘<div style=“background: #eee; padding: 10px; font-size: 14px”>’.$mesaj.’</div>’;
$mail->MsgHTML($content);
if($mail->Send()) {
// e-posta başarılı ile gönderildi
echo ‘<div class=“success”>E-posta başarıyla gönderildi, lütfen kontrol edin.</div>’;
} else {
// bir sorun var, sorunu ekrana bastıralım
echo ‘<div class=“error”>’.$mail->ErrorInfo.’</div>’;
}

}

?>

Avatar
arduino coder 7 yıl önce

Merhaba, yandex maili local(xampp) sunucumda hiç sorun yaşamadan kullanıyorum. Ama Centos makineme atınca mailler giderken çok uzun sürüyor ve sayfa http 500 e düşüyor. Mailler gitmesi gereken yere ulaşıyor ama contact sayfaya geri dönmesi gerekmekte. smtp testi yaptırdırm sonuç: “Warning on Connection time” ve “Not good! on Transaction Time” ne kadar araştırdıysam çözüm bulamadım. Server taraflı yapılması gerekli bir ayar var mıdır yada bildiğiniz bir çözüm ???

Avatar
harbiadam 7 yıl önce

Warning: stream_socket_enable_crypto(): Peer certificate CN=<a href="http://web5.hosting.com.tr" rel="nofollow noopener" title="web5.hosting.com.tr">web5.hosting.com.tr</a>' did not match expected CN=mail.harbiadam.com’ in /home/harbiada/public_html/html/yorumphp/class.smtp.php on line 197

hocam bu hatayı nasıl düzeltebilirim

Avatar
Murat Albayrak 8 yıl önce

Anlamayan arkadaşlar için bu link daha açıklayıcı olabilir. http://goo.gl/Z9hTGc

Avatar
ŞAH MAİL CİHAN 6 yıl önce

kenansahmail@gmail.c.o.m. aradaki boşlukları silsen adamlar banlıyorlarmı ney

Avatar
ŞAH MAİL CİHAN 6 yıl önce

kenansahmail@gmail

Avatar
ŞAH MAİL CİHAN 6 yıl önce

nasıl ulaşabilirim sana

Avatar
ŞAH MAİL CİHAN 6 yıl önce

kardeş yazıyorum siliyorlar veya engelliyorlar ney varsa

Avatar
ŞAH MAİL CİHAN 6 yıl önce

kardeş ordan ebgellediler niye anlamadımda tw versem veya skype varsa verde konuşak kuramadım bana yardımcı olabilirmisin.kenansahmail@gmail.com

Avatar
Fevzi TEMİZ 7 yıl önce

Merhaba, yazdığım uygulamada çok güzel çalışıyor ancak bu eklenti ile gönderdiğim emaillerin okkundu veya teslim bilgisini alamazmıyım?

Avatar
ePvpServerler 7 yıl önce

Merhabalar,

Formu doldurtup if($_POST) tagının içeriğine mail ayarlarınızı eklerseniz post işlemi gerçekleştiğinde mail gönderecektir. Umarım doğru anlamış ve anlatmışımdır :)

Avatar
Ömeri Mansur 7 yıl önce

merhabalar;

mail göndermek istediğimde;

Mesajınız gönderilirken bir hata oluştu. Lütfen daha sonra tekrar deneyin.

bana bu hatayı veriyor ve wpde ayarları yaptım, görmedi :(

Avatar
taylan 9 yıl önce

wordpress eklenti eklemeden el ile smtp ayarını girmek istiyorum ben , bu soru hakkında bilginiz var mı ?

Avatar
Haşim Arslan 8 yıl önce

Elinize sağlık öncelikle, program çalışıyor, denedim hemen. Yalnız ben kullanıcıdan bir form doldurmasını istiyorum. Doldurup göndere tıklayınca bana düşmesi gerekiyor. O tabloyu nasıl buraya koyabilirim

Avatar
Mehmet ÜNAL 8 yıl önce

Merhaba Hocam,

validator.yandex.com yardımcı olabilir sanırım

Avatar
Ali Özgür Gündoğdu 8 yıl önce

barman selam çözümü buldunmu? bana ulaşırmısın

Avatar
Ali Özgür Gündoğdu 8 yıl önce

arkadaşlar ben yandex in kurum mailini kullanıyorum php 4.7 kullanıyorum serverimde.. ama bir türlü smtp verify yi başaramadım.. bana yardımcı olurmusunuz? teşekkürler

Avatar
Tolga Ünlü 8 yıl önce

Teşekkürler

Avatar
Barman 9 yıl önce

Yandex Kurumsal Mail Kullanıyorum.
Sürekli bu hatayı alıyorum.
SMTP -> ERROR: Password not accepted from server: 535 Incorrect authentication data
SMTP Error: Could not authenticate. Mailer Error: SMTP Error: Could not authenticate.

Şifre ve maili doğru yazıyorum smtp host adresinide doğru yazıyorum ama sürekli aynı hatayı alıyorum.

Avatar
AaA 9 yıl önce

Süper Cevap olmuş

Avatar
Destan 9 yıl önce

benim anlamadığım olay mesaj içerğini iletişim formundan kendisi post etmeyecek mi?Burdan gönderilen mail bana gelecek o zaman ben ne isterim gönderenin mail adresi ve mesajın içeriğini göreyim. $mail->Subject = “Mesaj Basligi”; // Konu basligi$mail->Body = “Mesaj icerigi”; // Mailin icerigi burada bakınca kodlara mesaj içeriği diye yazılmış kendime içeriğini kendim yazdığım mesajımı gönderiyorum yani

Avatar
Ottoman 9 yıl önce

Sana takacak biri mi lazım densiz herif?

Avatar
taylan 9 yıl önce

Sevgili Hasan bey,
Yorum bölümünden gerekli soruyu sordum ben ,cevaplarlarsa ne ala, cevaplamak zorunda değiller.

Kaldı ki sen ne hakla böyle bir terbiyesiz yorum yazıyorsun, Senin paralı uşağımı var burada ?

Avatar
Hasan 9 yıl önce

Kim takar seni?

Yorum Yap