Ekli Dosya Gönderme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Ekli Dosya Gönderme

Mesaj gönderen Serim »

merhaba arkadaşlar,

access veritabanımda adsoyad, mail ve checked alanlarım var.checked alanını dbgridde seçilen satırı true veya false değeri alması için kullandım.programı çalıştırdığım zaman 2 butonum var; ya gridden seçtiğim maillere(checked alanı true olanlar) yada griddeki tüm maillere herhangi bir dosya göndereceğim.(attach olayı)

normal mail göndermeyi biliyorum ama seçili olanlara yada hepsine mail gönderme olayını tam olarak bilmiyorum :( hele hele dosya göndermeyi hiç bilmiyorum :)



herkese iyi çalışmalar..
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

aşağıdaki kodlarda (fahrettin abinin kodları :)) ekli dosya gönderme olayını yapıyor ama birden fazla kişiye mail göndermiyor. :(

Kod: Tümünü seç

function SendMail(VAR_KIMDEN:string;VAR_DONUS_ADRESI:string; VAR_ALICI_E_MAILLER:string;VAR_KONU:string;VAR_MESAJ:String;FileToSend:string):Boolean;
var
  SMTP:TIdSMTP;
  MSS_SMTP:TIdMessage;
  VAR_BODY:TStringList;

  MailFile       : TidAttachment;
begin
  VAR_BODY:=TStringList.Create();
  SMTP:=TIdSMTP.Create(nil);
  MSS_SMTP:=TIdMessage.Create(nil);
  with MSS_SMTP do
  begin
    Clear;
    VAR_BODY.Add(VAR_MESAJ);
    Body.Assign(VAR_BODY);    // mesaj
    From.Text := VAR_KIMDEN; //kimden kısmında gorunecek text
    ReplyTo.EMailAddresses := VAR_DONUS_ADRESI; //e-mail adresim
    Recipients.EMailAddresses := VAR_ALICI_E_MAILLER;
    Subject := VAR_KONU; // e-mail konusu
    if FileToSend <> '' then
     begin
       MailFile := TidAttachment.Create(MessageParts, FileToSend);
       MailFile.DisplayName := FileToSend;
     end;

    SMTP.AuthenticationType := atLogin; // Relay'e kapali SMTP serverlar icin....
    SMTP.Username := 'mmmmmmmmm';
    SMTP.Password := 'xxxxxxxxx';
    SMTP.Host:='aaaaaaaa';
SMTP.Port:=25;
    try
      SMTP.Connect;
      SMTP.Send(MSS_SMTP);
      SMTP.Disconnect;
      SendMail:=True;
    except
      SMTP.Disconnect;
      SendMail:=False;
    end;
  end;
  SMTP.Free;
  MSS_SMTP.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if  SendMail('isim','mmmmmmmmm','mmmmmmmmm','deneme '+timetostr(now),'deneme '+timetostr(now),'deneme.txt') then
showmessage('gittiiiii :)')
 else
 showmessage('gitmediii :(');
end;
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
karflake
Üye
Mesajlar: 222
Kayıt: 15 Haz 2003 03:57

Mesaj gönderen karflake »

Döngü kullanarak göndermeyi denediniz mi?
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

döngü kullanmadan tek bir post ile tüm adreslere iletemiyormuyum?
bu şekilde olursa tek tek uzun sürmezmi ?
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Merhaba.

- Zaten döngüyü her seferinde SendMail edecek şekilde değil, String bir değişkene ard arda, noktalıvirgül ayraçlarıyla her email adresini ulayacak şekilde kuracaksın.

- Döngünün sonunda SendMail fonksiyonunda Alıcı olarak bu değişkeni vereceksin.

Kod: Tümünü seç

Var
  Sayac : Integer;
  Alici : String;
begin
  For Sayac := 0 to MailListesi.Count-1 do
  begin
    Alici := Alici + MailListesi[Sayac] + ';';
  end;
  If SendMail('gonderen@mail.com', 'gonderen@mail.com', Alici, 'Konu', 'c:\dosya.zip') 
    then ShowMessage('Göneri başarılı')
    else ShowMessage('Göneri başarısız');
end;
Resim
Resim ....Resim
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Mesaj gönderen sadettinpolat »

:idea: bazı smtp sunucular to satırında belirli bir sayıdan fazlasına izin vermiyorlar. Eğer herşey normal ise ve mail göndermede bir problem varsa bu ayrıntıya dikkat edin.
"Sevmek, ne zaman vazgececegini bilmektir." dedi, bana.

---
http://sadettinpolat.blogspot.com/
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

Kod: Tümünü seç


procedure Tmail.suiButton3Click(Sender: TObject);
var
i:integer;
mail:string;
begin
sStr:='';
with VAR_QUERY do
   begin
   First;
   for i:=0 to RecordCount-1 do
       begin
          if VAR_QUERYcheckfield.Asboolean then
          begin
          sstr:=VAR_QUERYemail.AsString+';'+sstr;
          showmessage(sstr);
          end;
 next;
       end;
   Refresh;
   end;
mail:='aaa';
SendMail(mail,mail,sstr,suiedit4.text,suimemo1.Text,edit1.Text);
showmessage('Mesaj Gönderildi!');
end;
ben bu kodlarla mailimi gönderiyorum ama gridde checked alanı true olanlara göndereceğim ve burda showmesajla o mail alanlarını göster dediğim zaman son mail adresinin sonunada ; koyuyor. bu hata yaratmazmı?
Bilginin temelini sağlam at depremde zarar görmesin
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Sadece örneklemek istemiş, kurguyu sana bırakmıştım. :?

Kodundan edindiğim çıkarımlara göre şöyle olmalı...

Kod: Tümünü seç

var
  mail,
  sstr : string;
  i    : Integer;
begin
  sstr := '';
  with VAR_QUERY do
  begin
    First;
    for i:=0 to RecordCount-1 do
    begin
      if VAR_QUERY.FieldByName('checkfield').Asboolean
        then sstr:= sstr + VAR_QUERY.FieldByName('email').AsString + ';';
      next;
    end;
    If Length(sstr) > 0 // bu durumda her halukarda en son
                        // karakter ';' olacağı kesin olduğundan
      then System.Delete(sstr, length(sstr), 1);
    showmessage(sstr);
    Refresh;
  end;
  mail:='aaa';
  If SendMail(mail,mail,sstr,suiedit4.text,suimemo1.Text,edit1.Text)
    then showmessage('Mesaj Gönderildi!')
    else showmessage('Mesaj Gönderilemedi!');
end;
Resim
Resim ....Resim
Kullanıcı avatarı
Serim
Üye
Mesajlar: 194
Kayıt: 08 Ara 2004 03:32
Konum: Konya

Mesaj gönderen Serim »

çok tşk ederim mrmcop abi ,

gönderdiğiniz kodlar işimi gördü. :wink:
Bilginin temelini sağlam at depremde zarar görmesin
erdemdemirel
Üye
Mesajlar: 8
Kayıt: 24 Tem 2010 06:29

Re: Ekli Dosya Gönderme

Mesaj gönderen erdemdemirel »

emeği geçen herkese çok teşekkür ederim. Hiç tahmin edemeyeceğiniz kadar çok işime yaradı.
Cevapla