Php- Mail gönderme?

Kodla Büyü

iskender

Aktif Üye
Mesajlar
202
Arkadaşlar siteme üye olan kişinin mail adresine üyelik bilgilerini mail atmak istiyorum internetten bazı kodlar buldum ama mail() fonksiyonunda hata veriyor, çalışmıyor bilgi verir misiniz ? kodum aşağıda

<?php
$alici = [email='.....@hotmail.com]'.....@hotmail.com[/email]';
$konu = 'üyelik';
$mesaj = 'üyelik bilgilerin.......';
$basliklar = 'From: .....@gmail.com' . "\r\n" .
'Content-type: text/html; charset=utf-8' . "\r\n" .
'Reply-To: ....@gmail.com' . "\r\n" .
'Cc: ...@gmail.com' . "\r\n";

mail($alici, $konu, $mesaj, $basliklar);
?>
 
php mail fonsiytonunu kullanmayın. zaten kullansanızda bir çok server kapatıyor. kapatmasa bile mail gönderdiğiniz domain büyük ihtimalle kabul etmez .
hotmail gmail vb birçok şirket smtp olmayan gönderimleri direk siliyor .
yapmanız gereken php için çok popüler olan phpmailler sınıfını kullanamsınız.
interneten phpmailer kodlarını indirin. kodlarına include edin ve örneklerini inceleyerek kendinize uyarlayınız.
 
bu şekilde mail kullanımını sever lar onaylamıyor zaten engelliyorlar.
smtp ile gönderirseniz daha güvenilir olur.
 
$eposta='a@b.com';
$konu='deneme';
$msg='denememesajı';

$mailtanim = "MIME-Version: 1.0\r\n";
$mailtanim .= "Content-Type: text/html; charset=\"iso-8859-9\"\r\n";
$mailtanim .= "From: $ad <$kimden>\r\n";
$mailtanim .= "Reply-To: $ad <$kimden>\r\n";
mail($eposta, $konu ,$msg, $mailtanim);

Bunu bir deneyin hocam yaptığım tüm sitelerde kullanıyorum ve sorunsuz çalışıyor. Şayet çalışmazsa sunucunuzdan mail gönderimine izin verilmesi gerekiyordur
 
Mail gönderilecek sunucuların spam mail filtrelerinin %99'u message-id tanımının benzersiz olmasına çok önem veriyor. Aşağıdaki kod ile 50-70 sitenin hiç birinin maili spamlere takılmadan hotmail, gmail v.s. tüm sunuculara gidiyor.

Geliştirdiğim fonksiyonda değişkenleri kendiniz değer atarsınız. $mail_gonderen gönderici ismi, $mail_adresi gönderen adresi, $mesaj da gönderilecek mesaj (html ya da düz metin), $konu mailin konusu, $kime gidecek adres(ler).


Kod:
function mail_gonder($kime, $konu, $mesaj) 
{ 
	GLOBAL $mail_adresi, $mail_gonderen;
   $headers = 'From: '.$mail_gonderen.' <'.$mail_adresi.'>' . "\n";
	$headers .= 'Message-ID: <A' . time() . '@' . $_SERVER['HTTP_HOST'] . '>' . "\n";
	$headers .= 'MIME-Version: 1.0' . "\n";
	$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
	$headers .= 'Content-transfer-encoding: 8bit' . "\n";
	$headers .= 'Date: ' . date('r', time()) . "\n";
	$headers .= 'X-Priority: 3' . "\n";
	$headers .= 'X-MSMail-Priority: Normal' . "\n";
	$headers .= 'X-Mailer: PHP/' . PHP_VERSION . "\n";
	$headers .= 'X-MimeOLE: SimpContact' . "\n";

	$t_mesaj="<html>
	<head>
	<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
	<title></title>
	</head>
	<body>
	$mesaj
	</body>
	</html>";
	$send = mail($kime, $konu, $t_mesaj, $headers);
	return $send;
}

Ek açıklamalar:
- Local sunucunuzda mail sunucu olmadığı için mail gönderimi hata verecektir. Gerçek bir sunucuda çalışmaktadır.
- Spamlere takılmamak için fonksiyonu kullandığınız sunucuda (atıyorum bbnet.com) mutlaka sunucu adresi ile biten bir mail adresi (örn: bilgi@bbnet.com) adresi oluşturup, fonksiyonda da gönderek olarak bu mail adresini kullanarak göndermelisiniz. Bu şekilde kesinlikle spamlere takılmıyor.
 
PHP hakkında bilgim yok umarım bulursunuz. Ben PHP'nin hiç zorluk çıkarmadan her işi yaptığını düşünüyorum hep. Bir ASP sever olarak ne zaman hatalardan bunalsam "bu kez php öğrenip bırakacağım şu lanet dili" diyorum hep :)

PHP'de sorun olan bişey görmek asp'ye ilgimi artırdı desem yalan olmaz. PHP bende bir mit'ti hep, yıktınız sayın hocam :)

//Konunuzu böldüysem boş lakırdı ettiysem affola...
 
mail fonksiyonunu localhostta denemiyorsunuzdur umarım. Local'de deniyorsanız, bilgisayarınızda mail sunucu olmadığından hata almanız normal.
 
yakuphan' Alıntı:
mail fonksiyonunu localhostta denemiyorsunuzdur umarım. Local'de deniyorsanız, bilgisayarınızda mail sunucu olmadığından hata almanız normal.

Ben hatırlatmayı unuttum, hatırlatma için arkadaş adına teşekkürler :+1:
 
eya' Alıntı:
Smtp, gmail, hotmail v.s. hepsi hikaye arkadaşlar.

Bu kodlarımı kolay kolay paylaşmadım ama BBnet'e ve üyelerine bir katkım olsun, çünkü çok fazla yanlış bilgi var, adam gibi bilgi yok bu konuda. Uzun araştırmalar sonunda bu işi çözeli 1 sene oldu. 10'larca yabancı kaynak taradım. Hotmail, gmail v.b. teknik spam alt yapılarını araştırdım.

Mail gönderilecek sunucuların spam mail filtrelerinin %99'u message-id tanımının benzersiz olmasına çok önem veriyor. Aşağıdaki kod ile 50-70 sitenin hiç birinin maili spamlere takılmadan hotmail, gmail v.s. tüm sunuculara gidiyor.

Geliştirdiğim fonksiyonda değişkenleri kendiniz değer atarsınız. $mail_gonderen gönderici ismi, $mail_adresi gönderen adresi, $mesaj da gönderilecek mesaj (html ya da düz metin), $konu mailin konusu, $kime gidecek adres(ler).


Kod:
function mail_gonder($kime, $konu, $mesaj) 
{ 
	GLOBAL $mail_adresi, $mail_gonderen;
   $headers = 'From: '.$mail_gonderen.' <'.$mail_adresi.'>' . "\n";
	$headers .= 'Message-ID: <A' . time() . '@' . $_SERVER['HTTP_HOST'] . '>' . "\n";
	$headers .= 'MIME-Version: 1.0' . "\n";
	$headers .= 'Content-type: text/html; charset=utf-8' . "\n";
	$headers .= 'Content-transfer-encoding: 8bit' . "\n";
	$headers .= 'Date: ' . date('r', time()) . "\n";
	$headers .= 'X-Priority: 3' . "\n";
	$headers .= 'X-MSMail-Priority: Normal' . "\n";
	$headers .= 'X-Mailer: PHP/' . PHP_VERSION . "\n";
	$headers .= 'X-MimeOLE: SimpContact' . "\n";

	$t_mesaj="<html>
	<head>
	<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
	<title></title>
	</head>
	<body>
	$mesaj
	</body>
	</html>";
	$send = mail($kime, $konu, $t_mesaj, $headers);
	return $send;
}


hocam şüpem var bu konuda .
Verdiğiniz işlev mail fonskiyonun düzenlenmiş hali. Elinize sağlık.
Bu işlevdeki gönderen kısmına biz ögürce epostalar yazabiliyruz sanırım. Yani senden bana benden sana eposta atılabilir bizim insiyatifiz dışında.
örneğin iletisim@isbank.com.tr den istediğimize mail gider bu durumlar.
Benim araştırmalarım bu tür sahtecilikleri önlemekl için mail hizmeti veren serverin kimlik doğrulama istediği yönünde bir sonuç çıkartıyor. bir zamanlar (2004 yılı) PHP nin mail fonsiyonu kullanrak ilçemizin ilsis yöneticisie ilsis@meb.gov.tr den bir mail atmıştım. hiç şüphelenmeden yönergeleri yaptı. ve şifresini aldım. çünkü gönderen güvendiği biriydi.

mail fonsiyonun kullanılabilir olması durumunda bu güvenlik problemi hala gerçerli değilmi sizce. Bu sebepten host serverleri ve mail hizmeti veren serverler smtp kullanmak zorunda burakıyorlar. Eğer sizin serverinizde açı ve gödermeyi başarıyorsanız elinizde güzelbir koz var istediğiniz kişiye sitedğiniz kişiden mail atabilirisniz. hatta rica etsem deneme amaçlı olarak alp_gun@hotmail.com den agunes@meb.govtr e ve tam tersi istikamette birer eposta atın . test etmiş olalım.
zira joomla bile mail fonksiyonu ile mail atamıyor sanırım.
 
alpaygunes' Alıntı:
hocam şüpem var bu konuda .
Verdiğiniz işlev mail fonskiyonun düzenlenmiş hali. Elinize sağlık.
Bu işlevdeki gönderen kısmına biz ögürce epostalar yazabiliyruz sanırım. Yani senden bana benden sana eposta atılabilir bizim insiyatifiz dışında.
örneğin iletisim@isbank.com.tr den istediğimize mail gider bu durumlar.
Benim araştırmalarım bu tür sahtecilikleri önlemekl için mail hizmeti veren serverin kimlik doğrulama istediği yönünde bir sonuç çıkartıyor. bir zamanlar (2004 yılı) PHP nin mail fonsiyonu kullanrak ilçemizin ilsis yöneticisie ilsis@meb.gov.tr den bir mail atmıştım. hiç şüphelenmeden yönergeleri yaptı. ve şifresini aldım. çünkü gönderen güvendiği biriydi.

mail fonsiyonun kullanılabilir olması durumunda bu güvenlik problemi hala gerçerli değilmi sizce. Bu sebepten host serverleri ve mail hizmeti veren serverler smtp kullanmak zorunda burakıyorlar. Eğer sizin serverinizde açı ve gödermeyi başarıyorsanız elinizde güzelbir koz var istediğiniz kişiye sitedğiniz kişiden mail atabilirisniz. hatta rica etsem deneme amaçlı olarak alp_gun@hotmail.com den agunes@meb.govtr e ve tam tersi istikamette birer eposta atın . test etmiş olalım.
zira joomla bile mail fonksiyonu ile mail atamıyor sanırım.

Sayın hocam, haklısınız. Fakat ben bu fonksiyonu kullandığım sunucuda (atıyorum bbnet.com) mutlaka sunucu adresi ile biten bir mail (örn: bilgi@bbnet.com) adresi oluşturup, kullanarak gönderiyorum. Bu şekilde kesinlikle spamlere takılmıyor. Sizin dediğiniz gibi deneme yapılırsa elbette spamlere takılabilir. (Takılmadığı da oluyor bazen) Zira mail fonksiyonunda maili gönderen sunucu bilgisi de gidiyor karşıya, sunucu ile eposta adresinin uyumsuzluğu özellikle gmail ve hotmailde sorun çıkaracak, filtrelere takılacaktır. Siz mail fonksiyonunda gonderen eposta adresini değiştirebilirsiniz ama mail fonksiyon alt yapı olarak çalıştığı sunucuya ait mail sunucusundan mail gönderecektir, yani tahmin ettiğiniz gibi manipülasyona açık değil o kadar.

Önceden smtp ile gmaile bağlanıp gmail adresimden gönderiyorum fakat bu bile bazen spamlere takılabiliyor. Fakat sunucuda oluşturduğum mail adresi ile yukarıdaki fonksiyon ile hiç bir yere takıldığımı görmedim.

Hem php kaynaklarını, hem türkçe kaynakları, hem de özellikle mail sunucu alt yapıları ve yabancı mail kaynaklarını araştırdım. Yukarıdaki hazırladığım fonksiyonda hem karakter sorununu tamamen çözdüm, hem de spamlere takılma sorununu. Hatta toplu mail gönderimi bile yapıyorum sunucularımız izin verdiği kadarıyla.

Sorunuz için teşekkürler zira hatırlatmayı unuttuğum bu husus da hatırlatırmış oldu.
 
Ailecek kimlik doğrulamalı yönetemi yani SMTP yi kullanıyoruz. Kullanmayanları uyarıyoruz.
Serverimizin ip si temizse hiç sorun yaşamıyorum. yok şöyle olursa spama düşer böyle olursa olmaz, sitenin kendi domainine ait eposta ise sorun çıkmaz. bazen çıkar bazen çıkmaz gibi kafa karışıklığı yaşamıyorum.
Bu konuda bir süre önce formda gene paylaşılmıştı. Hiçte yanlış değildi. En azından paylaşanlar lütufta bulunduklarını dile getirmiyorlardı.
 
alpaygunes' Alıntı:
Ailecek kimlik doğrulamalı yönetemi yani SMTP yi kullanıyoruz. Kullanmayanları uyarıyoruz.
Serverimizin ip si temizse hiç sorun yaşamıyorum. yok şöyle olursa spama düşer böyle olursa olmaz, sitenin kendi domainine ait eposta ise sorun çıkmaz. bazen çıkar bazen çıkmaz gibi kafa karışıklığı yaşamıyorum.
Bu konuda bir süre önce formda gene paylaşılmıştı. Hiçte yanlış değildi. En azından paylaşanlar lütufta bulunduklarını dile getirmiyorlardı.

Uyarılarınız için teşekkürler hocam.

Dediğiniz gibi smtp kullanmak da tercih sebebidir. Spama takılmaması açısından daha garantidir, fakat mail parolanızı kaynak kodlarınıza yazdığınız için ben tercih etmiyorum. Hiç bir sunucu %100 güvenli değildir. Siteye yapılan bir saldırı da mail bilgilerinizin ve şifrenizin çalınması daha büyük sorunlar doğurabilir.

Kurumsal şirketler iletişim sayfası, v.b. sitelerinin içerisinden gönderilecek mailler için alan adlarını içeren mail adresinden göndermek istemektedirler. Bulunduğunuz bilgisayardaki mail sunucusunu kullanan kod çalışırken tekrar smtp bağlantısı kurmanız biraz da gereksizdir. Ayrıca sunucu ip'niz yasaklı ise aynı sunucuya smtp bağlantı kursanız da boş. Hotmail bir çok gmail adresini bile engelliyor. Biraz da gıcıklığına.

Hepsi bir yana sizin görüşlerinize saygı duyarken neden bana serzenişte bulunduğunuzu da anlamadım. Hatalı bir yanımız varsa sizden bu konuda öğreneceğim birşey varsa öğrenirim, doğru bildiğimi anlattım, emek verdiğim ve 60-70 sitede çalışan kodu hocamızın sorusu üzerine paylaştım. Siz de forumda daha önceden paylaşılan konunun linkini verseydiniz biz de okuyabilir, varsa eksiklerimizi giderebilirdik.

Rahatsız olduğunuz cümlemi de siliyorum, yanlış anlamışsınız, bu konuda tartışıp birbirimizi kırmamıza gerek yok, ama şunu bilin lütuf yapan da yoktu sayın hocam. İsterseniz attığım mesajı siz yayınlayın ben de mesajlarımı sileyim problem değil. O cümleyle anlatmak istediğim kolay kolay paylaşmadığım bir şeyi, BBNet'i ve branşdaşlarımı, sizleri sevdiğim için paylaştığımı belirtmekti.

Neyse sürç-i lisan ettik demekki. Özür dilerim herkesten.
 
bin bilsen de bir bilene danış derler hocam. Tartışma yapıcı olursa yeni şeyler öğrenmiş oluyoruz.

Benzersiz message id öneminin farkında değildim, teşekkürler hocam.
 
hocam smtp için kullandığınız sayfayı isterseniz şifrelersiniz. Zaten bu tür bir hizmeti kulanmak için kendi epostanızı kulanmazsıız. girersiniz gmaile siteadi@gmail.com diye yeni bir eposta alırsınız.

Şunuda hatırlatırım en baba frameworklerin (joomla , zend , codeigneiter) config dosyaları var içinde veritabanı ile ilgili bilgiler vs.

Üslubumun hoş olmamasının nedeni şu
Paylaşım yapanların paylaştıkları öğeği lütuf gibi yazmaları ,
Önceki paylaşımları ve sahiplerini bilerek veya bilmeyerek küçümsemeleri formda paylaşım yapanlara karşı düşüncesizlik . hiç sevmem. paylaşma daha iyi.
dilenciye sadaka atar gibi. Yanlış olanı bile düzeltirken paylaşımın sahibini düşünmek lazım.
 
sunucu hizmeti aldığın yerden uygun kodu iste. her sunucuda değişir bu kod.
 
repocket' Alıntı:
bin bilsen de bir bilene danış derler hocam. Tartışma yapıcı olursa yeni şeyler öğrenmiş oluyoruz.

Benzersiz message id öneminin farkında değildim, teşekkürler hocam.

Aslında Alpay hocamın kullanım amacı ile benim kullanım amacım farklı. O gmail veya hotmail adreslerinden mail göndermeyi amaçlıyor, benim ise amacım yazılımın bulunduğu sitenin kendisine ait mail adresinden mail göndermeyi amaçlıyor. Alpay hocamın tarzına ihtiyaç daha çok kişisel sitelerde, benim kullandığıma ihtiyaç ise daha çok kurumsal sitelerde duyuluyor.

Alpay hocamın tarzında elbette smtp ile bağlantı kurup göndermek gerekir. mail fonksiyonu ile gmail ve hotmail adına eposta gönderilmez. Mail fonksiyonun amacı zaten sunucunun mail sunucusunu kullanarak mail göndermektir. SMTP ile göndermek için XPertMailer'i kullanıyordum ama artık her sitenin kendi mail adresinden göndermeyi kurumsal olarak tercih ediyorum.

Paylaşım açısından güzel bir başlık oldu. Ben Alpay hocama teşekkür ediyorum.

aplaygunes' Alıntı:
hocam smtp için kullandığınız sayfayı isterseniz şifrelersiniz. Zaten bu tür bir hizmeti kulanmak için kendi epostanızı kulanmazsıız. girersiniz gmaile siteadi@gmail.com diye yeni bir eposta alırsınız.

Şunuda hatırlatırım en baba frameworklerin (joomla , zend , codeigneiter) config dosyaları var içinde veritabanı ile ilgili bilgiler vs.

Üslubumun hoş olmamasının nedeni şu
Paylaşım yapanların paylaştıkları öğeği lütuf gibi yazmaları ,
Önceki paylaşımları ve sahiplerini bilerek veya bilmeyerek küçümsemeleri formda paylaşım yapanlara karşı düşüncesizlik . hiç sevmem. paylaşma daha iyi.
dilenciye sadaka atar gibi. Yanlış olanı bile düzeltirken paylaşımın sahibini düşünmek lazım.

Elbette şifreleme mümkündür. Ama mail sorununu çözememiş bir arkadaşımız bu şifreleme olayını öğrenip uygulaması için çok daha fazla çaba harcayacaktır v.s.
Yukarıda yazdığım gibi sizin kullanım alanınız ile mail fonksiyonunun amacı farklı. Kurumsal yapılarda gmail ve hotmail ile biten adresler yerine insanlar kendi alan adları ile mail adresi istiyorlar.

Frameworkların config dosyaları o sunucunun içindeki yapıyı ilgilendirir. En fazla site hacklenir, bilgiler çalınır. Ama kaptırılan bir gmail şifresi ile sizin adınıza mail gönderilebilir, özel bilgileriniz ele geçirilebilir, aynı şifreyi kullanıyorsanız başka yerlerde de sıkıntı yayılabilir.

alpaygunes' Alıntı:
php mail fonsiytonunu kullanmayın. zaten kullansanızda bir çok server kapatıyor. kapatmasa bile mail gönderdiğiniz domain büyük ihtimalle kabul etmez .
hotmail gmail vb birçok şirket smtp olmayan gönderimleri direk siliyor .

Hocam beni gerçekten yanlış anladınız. Kimseyi küçümsemedim. "Smtp, gmail, hotmail v.s. hepsi hikaye arkadaşlar." derken burada size bir tavır yok kesinlikle kendi bildiğimi anlatırken kullandığım üslubu siz üstünüze alınmışsınız, ama paylaştığınız bilgi arkadaşı da eksik bilgilendirmiş olacaktı. Tekrar belirtiyorum diğer ifadeyi de BBNet'i, branşdaşlarımı ve sizleri sevdiğim için paylaşmış olduğumu belirttim, bu lütuf değildi kesinlikle. Neyse farkında olmadan demekki sizi kırdım, özür dilerim.

Sizi kırdığım için üzgün olduğum kadar (sizin kırılmanız dışında) olumlu eleştirilerle karşılıklı güzel bir paylaşım olduğu için de mutluyum.
 
osiris' Alıntı:
sunucu hizmeti aldığın yerden uygun kodu iste. her sunucuda değişir bu kod.

Siz haklı çıktınız zira hocamın kullandığı sunucu php'nin mail fonksiyonunu tamamen yasaklamış. Hem kötü niyetli kullanımlar, Alpay hocamın bahsetiği manipülasyonlar sonucunda en basit ve kullanımı kolay fonksiyonun kullanımının yasaklanması üzücü.

Hangi sunucu bu merak ettim. Zira ilk defa mail fonksiyonunu yasaklayan bir sunucu görüyorum.
 
Evvelki tartışamlarda yaşadığım cansıkıcı olaylar bende, hoş olmayan değişimlere neden oldu. cevaplarım ilk yıllara göre daha fevri . Gün geçtikçe kişiliğim değişiyor. eskiden kimseyle tartışmazken şimdi kelimeler bana batıyor. Sebep başkalarının ve özelikle benim tartışmalarımda karşısında bir insan olduğunu unutan form üyeleri olduğunu düşünoyurm. Sanırım gene gereğinden fazla hassas davrandım. Anlayışın için teşkkürler. kusurbakma.
 
alpaygunes' Alıntı:
Evvelki tartışamlarda yaşadığım cansıkıcı olaylar bende, hoş olmayan değişimlere neden oldu. cevaplarım ilk yıllara göre daha fevri . Gün geçtikçe kişiliğim değişiyor. eskiden kimseyle tartışmazken şimdi kelimeler bana batıyor. Sebep başkalarının ve özelikle benim tartışmalarımda karşısında bir insan olduğunu unutan form üyeleri olduğunu düşünoyurm. Sanırım gene gereğinden fazla hassas davrandım. Anlayışın için teşkkürler. kusurbakma.

Estağfirullah hocam. Siz kusura bakmayın. Biraz da forum ortamının sanallığı aslında, yazılanın ne niyetle yazıldığı anlaşılmıyor. Çok dikkatli yazmak gerekiyor.

Herkese iyi çalışmalar.
 
BBNET
Geri
Üst