

Bir Kullanıcı Belirlediği Süre Kadar Siteye Girmezse Mail Gönderme ASP
-
arkadaşlar mesela forumlarda oluyor bir aydır uğramadınız özledik sizi gibisinden mailler gönderiyorlar
aklıma takılan bunu her kullanıcı için tek tek nasıl yapıyorlar sql sorgu ile mi?
-
bilmiyorum da mantıken şöyle olabilr,
veritabanına kayıtlı olan kullanıcının en son login olma tarihine göre sıralatan bi sorgu gönderilir. gelen sorgu sonucunda 30 günden fazla süredir login olmayanlara mail gönderilir.
mail gönderme olayı bi while a yada for döngüsüne alınır. tek tek gönderir o sorgu.
bence
-
sayfanın başına tetikleyici fonksiyon yazılıyor biri sayfaya girdiği zaman o tetikleniyor ve kullanıcıların en son giriş tarihleri kontrol ediliyor uzun süre gelmeyen varsa mail atılıyor 1 senedir gelmeyen varsa evine polis yollanıyor :F
bkz: doğal trigger
-
vbulletin forumda böyle bir özellik var. kodları karıştırmak lazım. r10.netden bu tür mailler geliyor.
-
belli bir süre siteye girmeyen kullanıcıları sql sorgusuyla sıralatıyorsun.. sıralatırken de mail yollama fonksiyonunu içine katıyorsun. Tabi binlerce üyelik varsa mailler gitmeyecektir, server kasacaktır. Bunun içinde limitleme konuluyor.. Sayfalama sistemi düşün örneğin..
Kendi paneline bir sayfa hazırlıyorsun. Bu sayfada belli süre siteye girmeyen kullanıcıları 30ar 50şer listelettiriyorsun.. sayfa açılıyor.. ilk 50 kişiye mailler gidiyor.. devam linkine tıklıyorsun bir sonraki 50 kişiye daha mail gidiyor .... bunun gibi basit bir döngü.
Büyük sistemler php ile yazıldığı için phpdeki cronjob olayından faydalanabiliyorlar.. bazı sistemlerde de bahsettiğim paneldeki sayfa mantığı var.. asp için en mantıklısı sayfa örneği ya da plesk panelden zamanlanmış görev atama..
-
şimdi admin panelimdeveritabanı bağlantımı yaptım
sql sorgumdan bu günün tarihi ile son giriş tarihi 30gün olan kişileri seçtim
hepsi sıralandı
ama her kişinin kendi mail adresine maili nasıl göndereceğim yani listede onu kavrayamadım
-
en basitinden isimlerini sıralatıyorsun ya o döngünün içine mail kodlarını ekleyeceksin.. örnek kodunu koy nereye koyacağını göstereyim.
-
Set Mail = Server.CreateObject("Persits.MailSender")
Mail.Host = "mail.dkjlkj.com"
Mail.From = Request.form("eposta")
Mail.FromName = Request.form("ad")
Mail.AddAddress "info@dkjlkj.com"
Mail.Subject = "Sen Gelmez Oldun Mesajı"
Mail.IsHTML = True
Mail.Body = "30 Gün oldu bize uğramayalı dkjlkj.com"
On Error Resume Nex
Mail.Send
bunu kullanmayı düşünüyorum
-
Hocam döngünü görmeden nokta atışı yapamam ancak basit bir örnek;
<%
On Error Resume Next
set Rs=baglanti.Execute("Select uyeadi, mail from uyeler where [KOŞUL] ")
Do While not Rs.eof
%>
Kullanıcı Adı: <%=Rs"uyeadi"%> Mail gönderildi.
<%
Set ObjMail = Server.CreateObject("Persits.MailSender")
ObjMail.From = "info@dkjlkj.com"
ObjMail.FromName ="dkjlkj.com"
ObjMail.Host ="mail.dkjlkj.com"
ObjMail.Subject= "Sen Gelmez Oldun Mesajı"
ObjMail.AddAddress ""&Rs("mail")&""
ObjMail.IsHTML = True
ObjMail.Body = "30 Gün oldu bize uğramayalı dkjlkj.com"
ObjMail.SEnd
%>
<%
Rs.movenext
Loop
Rs.Close
Set RS=Nothing
%>
Tabi bu üstün körü yazılmış ve performanssız bir kod.. ben olsam şöyle yazardım
<%
On Error Resume Next
Set ObjMail = Server.CreateObject("Persits.MailSender")
ObjMail.From = "info@dkjlkj.com"
ObjMail.FromName ="dkjlkj.com"
ObjMail.Host ="mail.dkjlkj.com"
ObjMail.Subject= "Sen Gelmez Oldun Mesajı"
Adresler="info@dkjlkj.com"
set Rs=baglanti.Execute("Select uyeadi, mail from uyeler where [KOŞUL] ")
Do While not Rs.eof
Response.Write "Kullanıcı Adı: "&Rs("uyeadi")&" Mail gönderildi."
Adresler=Adresler&","&Rs("mail")
Rs.movenext
Loop
ObjMail.AddAddress ""&Adresler&""
ObjMail.IsHTML = True
ObjMail.Body = "30 Gün oldu bize uğramayalı dkjlkj.com"
ObjMail.SEnd
Rs.Close
Set RS=Nothing
%>Neden böyle yaptım 100 küsür üye sıralanırsa sürekli bileşeni aç, maili gönder, bileşeni kapa olayı olmasın diye mail adreslerini topladım ve toplu olarak tek seferde yolladım.. Tabi denemedim teorikte böyle olmalı :)
edit: metin editörü bazı yerleri kırpabiliyor kodlar sadece örnek içindir copy/paste yaparsan çalışmaz.
-
tamam hocam çok çok çok teşekkür ediyorum mevzuyu anladım :)