Mail yollama ile ilgili

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mail yollama ile ilgili

Mesaj gönderen barutali »

Öncelikle Konuyu Okuyan herkeze merhaba ..

Benim sorunum toplu mail atarken kişilerin herkeze görünmesi.. Örneğin Outlook gibi maili toplu attığım zaman kişiler gönderilen kısmından sadece kendi mail adreslerini görebilsin istiyorum bunun için nasıl bir yol izlemem lazım acaba ..

Herhangi bir soruma gelebilcek sorular karşısında tam açıklama yapayım..

INDY 9 kullandım..

Kod: Tümünü seç

Var
  IdSMTP                : TIdSMTP;
  IdMessage            : TIdMessage;
  HTMLpart             : TIdText;
  Attachment           : TIdAttachment;
  GideceklerListesi    : String;
  p, i : integer;
  gidecek: string;
begin
   Screen.Cursor:=crHourGlass;
 
  IdSMTP                                 := TIdSMTP.Create(Nil);
  IdSMTP.AuthenticationType              := atLogin;
  IdSMTP.Host                            := dnslst.Text;
  IdSMTP.Username                        := edmkadi.Text;
  IdSMTP.Password                        := edmpas.Text;

  if E_port.Text = EmptyStr then
  IdSMTP.Port                            := 25
  else
  IdSMTP.Port                            := StrToInt( E_port.Text);

  // Mail Body işlemleri
  IdMessage := TIdMessage.Create( nil );
  IdMessage.From.Name               := E_fromname.Text;
  IdMessage.From.Address            := edmkadi.Text;


  
  GideceklerListesi := E_to.Lines.Text;
  i:=0;
  if Pos(',', GideceklerListesi)>0 then
   begin
      while Pos(',', GideceklerListesi)>0 do
       begin
      
          p:=pos(',',GideceklerListesi);
                gidecek:=(copy(GideceklerListesi,1,p-1));
                  IdMessage.Recipients.Add;

                   IdMessage.Recipients[i].Address := Trim(gidecek);
                Delete(GideceklerListesi,1,p);
                i := i + 1;
       end;

       end;

  IdMessage.Subject        := edmKONU.Text;
  IdMessage.ContentType    := 'text/plain';
  IdMessage.CharSet        := 'UTF-8';

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/plain';
  HTMLpart.Body.Text       := edmicerik.Text;
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/html';
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart.Body := edmicerik.Lines;

 if E_filename.Text <> EmptyStr then
  begin
  Attachment := TIdAttachment.Create( IdMessage.MessageParts, E_filename.Text );

  Attachment.ContentDisposition := 'attachment';
  Attachment.ExtraHeaders.Values['content-id'] := E_filename.Text;
  end;

  IdSMTP.Connect;
  IdSMTP.Authenticate;
  IdSMTP.Send( IdMessage );
  IdSMTP.Disconnect;

  Attachment.Free;
  IdMessage.Free;
  IdSMTP.Free;
  Screen.Cursor:=crDefault;
  spSkinMessage1.MessageDlg('Mailler Gönderildi',mtInformation,mbOKCancel,0);
Not : Bu kodları bu sitede bir örnekten aldım..
Şuan bu kodlarla mail atınca mail listesindeki tüm adresler mailleri yolladığım herkezde görünüyor.. Bense sadece kişinin kendi mail adresini görmesini istiyorum.. Bunun için nasıl bir değişiklik yapmam lazım kodlarda acaba yada ne eklemem lazım..

Şimdiden Herkeze teşekkürler ..
amatör küme programcı :D
Kullanıcı avatarı
White Rose
Üye
Mesajlar: 726
Kayıt: 06 Tem 2005 09:41
Konum: Güneyden
İletişim:

Mesaj gönderen White Rose »

mail gönderme kodunu for döngüsü içine alın ve tek tek mail listesine gönderin.
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mesaj gönderen barutali »

Teşekkür ederim .. Hemen denicem
amatör küme programcı :D
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

syn lanetli
Not : Bu kodları bu sitede bir örnekten aldım..
sitede benzer mail atma kodlarıını bende inceledim fakat ne denediysem başarılı olamadım.Adım adım bu işin nasıl yapıldığından bahsedebilirimisin.Delphi7 kullanıyorum hotmail de hesabım var.hotmail gmail yahoomail mynet gibi mail adresi olan herkeze mail atabiliyormusunuz.Kodları açıklayıcı halde yayınlarsanız çok sevinirim.
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mesaj gönderen barutali »

Biraz düzenlemem gerekti kodları toplu mail de sadece ilk maile atıyordu
pos ile virgüle kadar alıp diğerini atması gerektiğini gösteriyordu ama yapmıyordu..
Onu çözmekle uğrasamadım kendim düzenledim kalanı

For döngüsünü kullanarak beceremedim :oops: bende timer la yaptım :)

Kod: Tümünü seç

procedure TForm2.SpeedButton3Click(Sender: TObject); //Gönder Butonu
begin
  timer2.Enabled:=true;
end;

Kod: Tümünü seç

procedure TForm2.Timer2Timer(Sender: TObject);
Var
  IdSMTP                 : TIdSMTP;
  IdMessage            : TIdMessage;
  HTMLpart              : TIdText;
  Attachment           : TIdAttachment;
  i                           : integer;
  
begin
   Screen.Cursor:=crHourGlass;
 // Mail Server Ayarları
  IdSMTP          := TIdSMTP.Create(Nil);
  IdSMTP.AuthenticationType := atLogin;
  IdSMTP.Host   := dnslst.Text; // sunucu adı (örn : mail.delphiturkiye.com
  IdSMTP.Username := edmkadi.Text; // kullanıcı adı : genelde  isim@domain şeklinde olur..
  IdSMTP.Password := edmpas.Text; // mail şifresi 

  if E_port.Text = EmptyStr then
  IdSMTP.Port := 25 // port numarası genelde mail sunucuları 25 i kullanır..
  else
  IdSMTP.Port := StrToInt( E_port.Text);

  // Mail Body işlemleri
  IdMessage := TIdMessage.Create( nil );
  IdMessage.From.Name  := E_fromname.Text; //Gönderen adı soyadı 
  IdMessage.From.Address := edmkadi.Text; // gönderen mail adresi

   {
  mail adreslerinin listbox a eklettirip sürekli ilk kayıta attırıyorum maili attıktan sonra onu silince bi altındaki ilk kayıt oluyor doğal olarak 
aynı işlemi onada yapıyor... Listbox da item kalmadığı zaman timer false duruma geçiyor..
   }

    begin
       IdMessage.Recipients.Add;
       IdMessage.Recipients[i].Address :=spSkinListBox1.Items.Strings[0]; 
       spSkinListBox1.Items.Delete(0);




  IdMessage.Subject        := edmKONU.Text; // mail konusu
  IdMessage.ContentType    := 'text/plain'; 
  IdMessage.CharSet        := 'UTF-8'; // karakter seti

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/plain';
  HTMLpart.Body.Text       := edmicerik.Text; // mailin içeriği body kısmı
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart := TIdText.Create( IdMessage.MessageParts );
  HTMLpart.ContentType     := 'text/html';
  HTMLpart.ContentTransfer := 'quoted-printable';

  HTMLpart.Body := edmicerik.Lines; // 


 if E_filename.Text <> EmptyStr then
  begin
  Attachment := TIdAttachment.Create( IdMessage.MessageParts, E_filename.Text );

  Attachment.ContentDisposition := 'attachment';
  Attachment.ExtraHeaders.Values['content-id'] := E_filename.Text; // ekli dosya göndermek için dosyanın bulunduğu yol 
  end;

  IdSMTP.Connect; 
  IdSMTP.Authenticate;
  IdSMTP.Send( IdMessage );
  IdSMTP.Disconnect;

  Attachment.Free;
  IdMessage.Free;
  IdSMTP.Free;
  Screen.Cursor:=crDefault;

  {

Listbox da item kalmayınca timer kendini kapatıyor..
  
 }

  if spSkinListBox1.Items.Count=0 then
  timer2.Enabled:=false;


Tabi bu kodlara daha uzman bakabilcek olursa çok daha basitleştirilebilir işimi gördüğü için bu hali uğrasmadım açıkcası

Kolay Gelsin ...
amatör küme programcı :D
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

tmm lanetli de daha biz bir tanesini atamadık bir tane mail atabilsek döngü içine bir şekilde alırız her halde :roll:

Örneğin ben kendi hotmail hesabımdan (haydaryuceloglu@hotmail.com)
pariltim2160@hotmail.com ...vb gibi hesabına mail atmak istiyorum yani listbox1 in string inde tek kayıt var oda (pariltim2160@hotmail.com)

şimdi buradaki kodlara edit yada memomaların adları değiştiğinden iş çok karışıyor.Kodları benim verdiğim örnek şeklinde nasıl dolduracağız basit bir uygulama rapidshare link i verebilirmisiniz.
IdSMTP.Host := dnslst.Text; // sunucu adı (örn : mail.delphiturkiye.com
IdSMTP.Username := edmkadi.Text; // kullanıcı adı : genelde isim@domain şeklinde olur..
IdSMTP

nasıl dolduruluyor.Ben hala çözemedim :oops: :cry:
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mesaj gönderen barutali »

buyur aşağıdaki linkten indirebilirsin ..

http://rapidshare.com/files/79887235/mail.rar.html
amatör küme programcı :D
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

Kullanıcı Adı : haydaryuceloglu@hotmail.com
Kullanıcı şifresi: ****** // 6 haneli mail şifrem
Gönderen Adı : Haydar
Mail Konu :Delphi mail
İçerik : Delphi projesinden mail atıyorum mail gelirse ara

ListBox1 de sadece pariltim2160@hotmail.com ekli

Mail sunucusu: smtp.hotmail.com // hotmail sunucusu
Port: 25

Dosya eklemiyorum sadece
İçerik : Delphi projesinden mail atıyorum mail gelirse ara
göndersin istedim.Ama

Kod: Tümünü seç

socet eror # 11004
list index out of bounds (0)
hatası alıyorum. :oops: :cry:
Kullanıcı avatarı
barutali
Üye
Mesajlar: 297
Kayıt: 02 Tem 2007 02:30

Mesaj gönderen barutali »

hotmail in sunucusu üzerinden atmak okadar basit olsaydı keşke :D
Thunderbird de bile hotmail i kullanabilmek için özel eklenti yapmışlar.
Micro$oft ne yazıkki işi baya zorlaştırmıs..

kendinize ait bir domain varsa onun üstünden atabilirsiniz..

mail.yazilimist.com olarak kendi sunucum üzerinden mail atabiliyorum.. Suan..
amatör küme programcı :D
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

ok. konu anlaşıldı.Teşekkürler
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

kendinize ait bir domain varsa onun üstünden atabilirsiniz..
bir domenden yollamayı başardım.fakat mail junk mail olarak gidiyor :x böyle bir sorun yaşıyormusun
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

tmm dır
İlk yolladığım junk mail olarak gitti :( şimdi tıkır tıkır çalışıyor. :D
cozturk
Üye
Mesajlar: 484
Kayıt: 15 Haz 2005 05:22

Mesaj gönderen cozturk »

lanetli yazdı:Thunderbird de bile hotmail i kullanabilmek için özel eklenti yapmışlar.
Thunderbird sitesinde eklentiler arasında aradım bulamadım. Gayri resmi bir eklenti olabilir. yerini öğrenebilr miyiz
Kullanıcı avatarı
haydarxxx
Üye
Mesajlar: 668
Kayıt: 09 May 2005 11:31
Konum: izmir

Mesaj gönderen haydarxxx »

okulumun web hosting servisi http://www.tamhost.com adında bir servis.Oradaki mail servis sunucusu ile atıyorum
Kendi mailime mail normal geliyor ama başka ...@hotmail.com hesaplarına junk mail olarak düşüyor.
şimdi tıkır tıkır çalışıyor
Bende sevinmiştim. :cry:
Bu junk mail sorununu nasıl çözeriz serverlarlamı ilgili acaba hangi hesaba ulaşıp ulaşmadığı nasıl kontrol ediliyor.
Kullanıcı avatarı
Battosai
Üye
Mesajlar: 1316
Kayıt: 01 Eki 2007 12:02
Konum: Ankara

Mesaj gönderen Battosai »

döngü içinde mail atılması tercih edilecek en kötü yoldur....örneğin 100 tane adrese döngü ile mail atın bakalım ne oluyor...Bu işleri mail servisine bırakacaksın nasıl bırakcaksın? tabiki gidecek mail adreslerini sms gönderir gibi bir text olarak mail servise yollayarak...Böylece 1000 tane kişiye anında mail yollayabilirsiniz gerisini mail servisi düşünsün...yazılım da önemli olan en stabil ve hızlı yolu seçmektir...
Cevapla