Gmaile Gelen Maili Okuma

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
kaan_karabey
Üye
Mesajlar: 107
Kayıt: 01 May 2013 05:30

Gmaile Gelen Maili Okuma

Mesaj gönderen kaan_karabey »

Arkadaşlar Gmail Hesabıma Gelen Maili Okumak İstiyorum.

Bunu Nasıl Yapabilirim Şu Konudan Pek Birşey Anlamadım

viewtopic.php?t=34092
Sevgiler Yalan Olmuş Yalan Sahtekar Bırakıpta Bir Gün Seni Gitmeyecek Mi?
kaan_karabey
Üye
Mesajlar: 107
Kayıt: 01 May 2013 05:30

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen kaan_karabey »

Arkadaşlar Şu Şekilde Yapabilirmiyiz. Bir Tane WebBrowser Koyup Direk Açılışta E-Posta ve Şifreyi de Tanımlayıp Giriş Yaptırabilirmiyiz.
Sevgiler Yalan Olmuş Yalan Sahtekar Bırakıpta Bir Gün Seni Gitmeyecek Mi?
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen Lord_Ares »

Verdiğin linkte component ile örnekleri mevcut ama sen component kullanmak istemezsen Html Parse yöntemini kullanacaksın. Yani senin yukarıda dediğin şekil webbrowser ile ilgili sayfayı açıp sayfanın kaynak kodlarından ilgili alanları bularak gereken bilgileri göndereceksin. Örneğin gmail ana sayfasında kullanıcı adı ve şifre alanı (id si email olana kullanıcı adı id si passw olanada şifreni girip göndericeksin). Forumda Html parse ve webbrowser post diye aratırsan geniş bilgi bulabilirsin. Mrmarman hocamın foruma bağlanmak için yaptığı bir örnek var bu örneği incele
viewtopic.php?t=18498

Örnek olarak gmail girişi için şu şekilde

Kod: Tümünü seç

 WebBrowser1.Navigate( 'https://accounts.google.com/ServiceLogin?service=mail&continue=https://mail.google.com/mail/&hl=tr');
  While WebBrowser1.ReadyState <> READYSTATE_Complete do
    Application.ProcessMessages;
  WebBrowser1.OleObject.Document.GetElementByID('Email').Value := Edit1.Text;
  WebBrowser1.OleObject.Document.GetElementByID('Passwd').Value := Edit2.Text;
  WebBrowser1.OleObject.Document.GetElementByID('signIn').Click;
Aynı şekilde mail açıldıktan sonra gelen mail kutusu sayfasındakini parse ederek istediğini yapabilirsin.
Kolay gelsin
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen ikra »

benim fikrimce html parse islemleri cok da saglikli degil.
program son kullaniciya ulastiktan sonra birgün google kodlarinda güncelleme yaparsa parse islemi hatali sonuc verecektir. bu durumda son kullaniciya update göndermek zorunda kalacaksiniz.
en güzeli pop ve smtp bilesenleri ile cözüm saglamak.
ama dedigim gibi, bu benim fikrim.
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen SimaWB »

ikra yazdı:benim fikrimce html parse islemleri cok da saglikli degil.
program son kullaniciya ulastiktan sonra birgün google kodlarinda güncelleme yaparsa parse islemi hatali sonuc verecektir. bu durumda son kullaniciya update göndermek zorunda kalacaksiniz.
en güzeli pop ve smtp bilesenleri ile cözüm saglamak.
ama dedigim gibi, bu benim fikrim.
POP/IMAP/SMTP bileşenleri de kullansanız size cevap olarak dönecek değer HTML formatındadır maalesef. (En azından ben öyle biliyorum :) )
There's no place like 127.0.0.1
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen ikra »

nasil yani?
pop ile cagirdigim email bana gmailin belirledigi bir html formatinda mi geliyor?
hocam ben bunu ilk defa duydum.
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen SimaWB »

Gmail'in değil de kullanılan protokolün (POP3, IMAP) belirlediği formatta geliyor.
Aslında şimdi farkettim, Indy bizim için bu dönüşümü yapıyormuş. TIdMessages ve TIdText sınıfı sayesinde. Pek Indy kullanmadığım için dikkat etmemişim.
There's no place like 127.0.0.1
ikra
Üye
Mesajlar: 900
Kayıt: 28 Nis 2005 01:26
Konum: Simdilik Topragin Üstü

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen ikra »

SimaWB yazdı:Gmail'in değil de kullanılan protokolün (POP3, IMAP) belirlediği formatta geliyor.
Aslında şimdi farkettim, Indy bizim için bu dönüşümü yapıyormuş. TIdMessages ve TIdText sınıfı sayesinde. Pek Indy kullanmadığım için dikkat etmemişim.
: ))
iste bunu kasit etmistim. Webbrowser ile islem yapip geri dönen html'i parse etmek sagliksiz bir cözüm olur.
Belki bir süre calisir fakat ileriki dönemde google tarafindan bir degisiklik yapildiginda parse islemi hatali sonuc döndürecektir.
bu isin en güzel cözümü, pop ve smtp.
Vista ile gelen bir kisim Gadget'ler su an parsing yapamadiklarindan dolayi calismiyorlar. örnegin hava raporu.
kıdemsiz üye
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen SimaWB »

Indy'nin bu işi bizim için yapıp yapmadığı konusu kafamda soru işareti?
Gmail'den dönen e-posta ContentType'ı text/html ise bunu Indy'den nasıl döndürebileceğimi bulamadım.

Basit bir örnek yaptım, yol göstermesi açısından :
Form'a birer adet IdPOP3, IdSSLIOHandlerSocketOpenSSL, IdMessage, Memo ve Button koyun.

IdPOP3'un özellikleri:
host = pop.gmail.com,
port = 995,
IOHandler = IdSSLIOHandlerSocketOpenSSL1,
UseTLS = utUseImplicitTLS,
Username = eposta adresiniz,
Password = malum :)

olacak şekilde düzenleyin.

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  i: integer;
begin
  IdPOP31.Connect;
  if IdPOP31.Retrieve(1, IdMessage1) then
  begin
    Memo1.Lines.Add('E-posta sayısı: ' + IntToStr(IdPOP31.CheckMessages));
    Memo1.Lines.Add('------');
    Memo1.Lines.Add(IdMessage1.From.Text);//Gönderen
    Memo1.Lines.Add(IdMessage1.Recipients.EmailAddresses);//Alıcı(lar)
    Memo1.Lines.Add(IdMessage1.Subject);//Konu

    //E-Posta İçeriğini yaz
    Memo1.Lines.Add(IdMessage1.Body.Text);
  end;
end;
Yukarıda da yazdığım gibi çok basit bir örnek. IdPOP31.Retrieve ile 1. mesajı okuduğuma dikkat ediniz. CheckMessages kadar döngüye girilip tüm e-postalar okunabilir.
Ayrıca e-posta içeriğini yazdırırken de hiç kontrol yapmadım. Aslında IdMessage1.ContentType kontrol edilip ona göre içeriği yazdırılmalı.
Yine ayrıca(!) attachment kontrolü vs. de yapılmamıştır, dikkatinizi çekerim.

Indy'nin örnekleri arasında işinize yarayacak bir örnek var: IdPOP3 / IdSMTP / IdMessage
There's no place like 127.0.0.1
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen Lord_Ares »

Ek olarak SimaWB arkadaşımızın verdiği linkteki örneği incele. Örnekte ufak bir sorun vardı düzeltip yükledim.
http://s3.dosya.tc/server3/ny1u26/indy_ ... i.rar.html

Ayrıca kullanmak istediğin mail sunucularının pop3 ayarlarınıda şuradan görebilirsin.
http://www.fatihkapagan.com/2014/05/mai ... -imap.html
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen SimaWB »

Fırsat buldukça tavsiye ettiğim Synapse kütüphanesini kullanarak GMail'deki epostalaları okumak bence çok daha kolay.
İlgilenenlere örnek:

Şu unit'leri ekleyin: blcksock, smtpsend, pop3send, ssl_openssl

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
var
  pop3: TPOP3Send;
begin
  pop3 := TPOP3Send.Create();
  try
    pop3.AutoTLS := false;
    pop3.Username:='eposta@gmail.com';
    pop3.Password:='şifreniz';
    pop3.TargetHost:='pop.gmail.com';
    pop3.TargetPort := '995';
    pop3.FullSSL := true;
    pop3.Sock.SSL.SSLType := LT_SSLv3;
    pop3.Sock.SSLDoConnect();
    if pop3.Login() and pop3.Stat() then
    begin
      Memo1.Lines.Add(IntToStr(pop3.StatCount)); //Toplam e-posta sayısı
      if pop3.Retr(1) then                       //ilk epostayı getir
        Memo1.Lines.AddStrings(pop3.FullResult); //e-posta içeriği (HTML)
    end;
  finally
    pop3.Free;
  end;
end;
There's no place like 127.0.0.1
kaan_karabey
Üye
Mesajlar: 107
Kayıt: 01 May 2013 05:30

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen kaan_karabey »

Gmailde Bulunan Okunmamış Msjları Nasıl Gösterebilirim?Ona Göre Şöyle Bir Uyarı Çıkartacam Yalnız Her 2 dk da Bir Çıkmasını İstiyorum :)

Resim
Sevgiler Yalan Olmuş Yalan Sahtekar Bırakıpta Bir Gün Seni Gitmeyecek Mi?
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: Gmaile Gelen Maili Okuma

Mesaj gönderen SimaWB »

There's no place like 127.0.0.1
Cevapla