Indyde birden fazla attach dosya

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Indyde birden fazla attach dosya

Mesaj gönderen naile »

indy componentlerini kullanarak mail gönderiorum, attach için kullandığım kod:

Kod: Tümünü seç

    IdAttach := TIdAttachment.Create(IdMessage1.MessageParts,OpenDialog1.FileName);
ama burda birtane dosya yazabiliyorum, birden fazla dosya eklemek istiyorum aynı maile, her dosya için yeniden create etmem mi gerekiyor? Helpe baktım bulamadım bişey, indynin demosu da yok bende, kurulmamaış delphi ile birlikte. Daha önce kullanan oldu mu böyle bişey?
Kullanıcı avatarı
vedatkaba
Kıdemli Üye
Mesajlar: 866
Kayıt: 06 Oca 2004 06:50
Konum: DARICA/GEBZE

Mesaj gönderen vedatkaba »

Kod: Tümünü seç

private
    { Private declarations }
      procedure ResetAttachmentListView;

Kod: Tümünü seç

procedure TfrmMessageEditor.btnAttachmentClick(Sender: TObject);
begin
   if OpenDialog1.Execute then
      begin
         TIdAttachment.Create(IdMsgSend.MessageParts, OpenDialog1.FileName);
         ResetAttachmentListView;
      end;
end;

procedure TfrmMessageEditor.ResetAttachmentListView;
var li: TListItem;
   idx: Integer;
begin
   lvFiles.Items.Clear;
   for idx := 0 to Pred(IdMsgSend.MessageParts.Count) do
      begin
         li := lvFiles.Items.Add;
         if IdMsgSend.MessageParts.Items[idx] is TIdAttachment then
            begin
               li.ImageIndex := 0;
               li.Caption := TIdAttachment(IdMsgSend.MessageParts.Items[idx]).Filename;
               li.SubItems.Add(TIdAttachment(IdMsgSend.MessageParts.Items[idx]).ContentType);
            end
         else
            begin
               li.ImageIndex := 1;
               li.Caption := IdMsgSend.MessageParts.Items[idx].ContentType;
            end;
      end;
end;
eğer işinize yararsa bende böyle bir kod vardı arşivde belki yararlı olur..

kolay gelsin
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.

***********************************
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

Teşekkürler ama bu tam olarak istediğim şey değil. tamaracka.com da biraz araştırma yaptım, orda da benim dediğim gibi yapmış biri, bende 3 dosya sınırı koyarak şu şekilde yaptım:

Kod: Tümünü seç

var
IdAttach1,IdAttach2: TIdAttachment;
try
...
    IdAttach1 := TIdAttachment.Create(IdMessage1.MessageParts,edit2.Text);
    IdAttach2 := TIdAttachment.Create(IdMessage1.MessageParts,edit3.Text);
finally
    IdAttach1.Destroy; 
    IdAttach2.Destroy;
end;
Kullanıcı avatarı
husonet
Admin
Mesajlar: 2962
Kayıt: 25 Haz 2003 02:14
Konum: İstanbul
İletişim:

Mesaj gönderen husonet »

Neden Destroy Free daha sağlıklı olmazmı?

Gazete manşetleri
* DİKKAT :Lütfen forum kurallarını okuyalım ve uyalım...!
* Warez,crack vs. paylaşımı kesinlikle yasaktır.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

:) Arkadaşlar Destroy kullanmayın, yanlış bir kullanım, Free kullanın.

Bir de bildiğim kadarıyla IdMessage Attachment'ları kendisi Free ediyor. Free etmeye gerek yok yani. Çok zaman oldu. Emin değilim.
fduman
Moderator
Mesajlar: 2749
Kayıt: 17 Ara 2004 12:02
Konum: Ankara

Mesaj gönderen fduman »

Borland'ın söylediği de bu. Bakın ne demiş...
To destroy an object, however, you should call the Free method (also inherited from TObject), because Free checks for a nil reference before calling Destroy. For example,

Employee.Free;
Kullanıcı avatarı
naile
Admin
Mesajlar: 1873
Kayıt: 11 Haz 2003 10:11

Mesaj gönderen naile »

coderlord yazdı::) Arkadaşlar Destroy kullanmayın, yanlış bir kullanım, Free kullanın.

Bir de bildiğim kadarıyla IdMessage Attachment'ları kendisi Free ediyor. Free etmeye gerek yok yani. Çok zaman oldu. Emin değilim.
Ya aslında orda da

Kod: Tümünü seç

TIdAttachment.Create(IdMessage1.MessageParts,edit2.Text);
şeklinde kullanmışlar ben tekrar free etmek için bu şekil yaptım, edip etmediğini bilmiyorum. Bu şekil free etmeden de düzgün gönderdi ama emin olamadığımda yapmıştım. Destroy pek kullanmam ben de aslında ama bunu biyerden almıştım sanırım ordan dolayı destroy kullanmışım. free yaptım.
dilekdurgun
Üye
Mesajlar: 30
Kayıt: 03 Kas 2005 05:01
İletişim:

Çoklu dosya Attc. sorunu...

Mesaj gönderen dilekdurgun »

elimde söle ir kod var ama ben 1 değil 1den fazla dosya eklemk istiyorum mailime örnek aşağıda yardım ederseniz sevinirim

Kod: Tümünü seç

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Ek1.Text:=OpenDialog1.FileName;

end;

procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
IdMessage1.Clear;
IdMessage1.From.Text :=Edit1.Text;  // kimden geldiği
IdMessage1.ReplyTo.EMailAddresses:=Edit1.Text; // gönderenin mail adresi
IdMessage1.Recipients.EMailAddresses:=Edit2.Text; // gönderilecek adres
IdMessage1.Date:=Date;  //günün tarihi
IdMessage1.Subject:=Edit4.Text;  // konu su
IdMessage1.Body.Text := memo1.Text; // mesajınız buraya
IdMessage1.Priority:=mpNormal;
// eklenecek dosyalar
if not (Ek1.Text='') then TIdAttachment.Create(IdMessage1.MessageParts,Ek1.Text);
IdMessage1.Body.Assign(Memo1.Lines);

try
IdSMTP1.Send(IdMessage1);  // bağlı mesajların gönderimi
finally 
IdSMTP1.Disconnect; // bağlantını kesilmesi
end;
end;
Cevapla