Indy ile Ekli mail alma ve eki kaydetme
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Indy ile Ekli mail alma ve eki kaydetme
Merhaba ,
yapmak istediğim aldığım eklentili mailin eklentisini kaydettirme
indy demosunda TidAttachmentFile aında bir nesne kullanıyor ama o yok bende hangi unitin içinde olduğunu bulamadım.
indy ile eklentili mesajın eklentisi nasıl kaydedildiğne dair bir örnek varsa memnun olurum iyi çalışmalar.
yapmak istediğim aldığım eklentili mailin eklentisini kaydettirme
indy demosunda TidAttachmentFile aında bir nesne kullanıyor ama o yok bende hangi unitin içinde olduğunu bulamadım.
indy ile eklentili mesajın eklentisi nasıl kaydedildiğne dair bir örnek varsa memnun olurum iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
TIdAttachment olmasın,
Indy 9 Help inde baktıgımda
Indy 9 Help inde baktıgımda
TIdAttachment
Hierarchy, Properties, Methods, Events, See Also, Unit: IdMessage
Encapsulates a MIME-encoded attachment or inline graphic.
TIdAttachment = class(TIdMessagePart)
Unit
IdMessage
Description
TIdAttachment is a TIdMessagePart descendant that encapsulates a MIME-encoded attachment or inline graphic. TIdAttachment and TIdText are used as collection items in a TIdMessageParts collection.
TIdAttachment provides methods and properties relevant to Internet Message attachments including ContentDisposition, FileName, and SaveToFile. TIdAttachment also reintroduces the Create constructor to specify the owner Collection and the file used to store the attachment. TIdAttachment also provides an Encode method to allow encoding of a message part to a TStream descendant
ÜŞENME,ERTELEME,VAZGEÇME
evet , bende aynı fikirdeyim ama örnekte geçen kodda TIdAttachmentFile yazıyor şimdi şu şekilde kullanmaya çalıştım bir örnek yaptım ve FileSAve hatası aldım
Kod: Tümünü seç
procedure TForm1.Button1Click(Sender: TObject);
var
eklenti:TIdAttachment;
begin
IdPOP31.Host:='mail.**********';
IdPOP31.Username:='***********';
IdPOP31.Password:='***********';
IdPOP31.Connect;
ShowMessage(IntToStr(IdPOP31.CheckMessages));
IdPOP31.RetrieveHeader(1,IdMessage1);
ListBox1.items.add(IdMessage1.From.Address);
IdPOP31.Retrieve(1,IdMessage1);
Memo1.Lines:=IdMessage1.Body;
if IdMessage1.MessageParts.Count >0 then
begin
try
eklenti:=TIdAttachment.Create(IdMessage1.MessageParts,'deneme.zip');
eklenti.SaveToFile('c:\deneme.zip');
finally
eklenti.free;
end;
end;
IdPOP31.Disconnect;
end;
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
http://ksajadi.com/dflat/archives/000009.html
sunu bir incelesene, pek fazla indy ile ugrasmadıgım icin birsey diyemeyecegim.
sunu bir incelesene, pek fazla indy ile ugrasmadıgım icin birsey diyemeyecegim.
ÜŞENME,ERTELEME,VAZGEÇME
Kod: Tümünü seç
procedure TfrmMain.Button1Click(Sender: TObject);
var
intIndex: integer;
fname: string;
intMSGIndex: integer;
begin
// Find selected
for intIndex := 0 to lvMessageParts.Items.Count - 1 do
if lvMessageParts.Items[intIndex].Selected then
begin
//now find which TIdAttachment it is in MSG
intMSGIndex := FindAttachment(lvMessageParts.Items[intIndex].caption);
if intMSGIndex > 0 then
begin
fname := FAttachPath + TIdAttachment(Msg.MessageParts.Items[intMSGIndex]).filename;
SaveDialog1.FileName := fname;
if SaveDialog1.Execute then
begin
Showbusy(true);
TIdAttachment(Msg.MessageParts.Items[intMSGIndex]).SaveToFile(SaveDialog1.FileName);
Showbusy(false);
end;
end;
end;
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
merhaba ,
teşekkür ederim kod işimi çözecek ama şöyle bir sorun var TIdAttachment e cast etme sırasında Access violation at adress.... yaratılmamış nesneye erişim sorunu yaşıyorum bu TIdAttachment i bir şekilde yaratmak gerekiyor.
olayı çözemedim henüz
teşekkür ederim kod işimi çözecek ama şöyle bir sorun var TIdAttachment e cast etme sırasında Access violation at adress.... yaratılmamış nesneye erişim sorunu yaşıyorum bu TIdAttachment i bir şekilde yaratmak gerekiyor.
olayı çözemedim henüz
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Kod: Tümünü seç
procedure TfrmMain.FormCreate(Sender: TObject);
begin
// read the configuration from ini file
ReadConfiguration;
name := 'frmMain';
//setup path to put attachments into
FAttachPath := IncludeTrailingBackSlash(ExtractFileDir(Application.exename)); //starting directory
FAttachPath := FAttachPath + 'Attach\';
if not DirectoryExists(FAttachPath) then ForceDirectories(FAttachPath);
FMsgCount := 0; FMailBoxSize := 0;
Showbusy(false);
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
merhaba @vedatkaba ,
öncelikle ilgin için teşekkür ederim.
fakat sorun bunlarla iligili değil, Sorun TIdAttachment sınıfına CASTING işlemi yapılırken ortaya çıkıyor mesela,
satırında bellek erişim hatası alıyorum yani yaratılamamış bir nesneye erişmek istiyorum,
TIdAttachment ın Create kurucusuna baktığımızda
IdMessageParts ve FileName:String tipinde parametre geçmemizi istiyor tamam çok güzel geçiyorum parametreyi ama SaveToFile metodunu çağırdığımda bana derleyici ,Error Save File hatasını üretiyor.
öncelikle ilgin için teşekkür ederim.
fakat sorun bunlarla iligili değil, Sorun TIdAttachment sınıfına CASTING işlemi yapılırken ortaya çıkıyor mesela,
Kod: Tümünü seç
TIdAttachment(Msg.MessageParts.Items[intMSGIndex]).filename;
TIdAttachment ın Create kurucusuna baktığımızda
IdMessageParts ve FileName:String tipinde parametre geçmemizi istiyor tamam çok güzel geçiyorum parametreyi ama SaveToFile metodunu çağırdığımda bana derleyici ,Error Save File hatasını üretiyor.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
- sadettinpolat
- Moderator
- Mesajlar: 2131
- Kayıt: 07 Ara 2003 02:51
- Konum: Ankara
- İletişim:
Kod: Tümünü seç
...
...
...
for intIndex2 := 0 to Pred(idMessage2.MessageParts.Count) do
begin
if (idMessage2.MessageParts.Items[intIndex2] is TIdAttachment) then
begin
DosyaAdi :=TIdAttachment(idMessage2.MessageParts.Items[intIndex2]).Filename;
Kaydet := DosyaPath+DosyaAdi;
If Not TIdAttachment(idMessage2.MessageParts.Items[intindex2]).SaveToFile(Kaydet) Then
...
...
...
çok teşekkür ederim
sorun belirttiğiniz şekilde çözülmüştür.
iyi çalışmalar.
sorun belirttiğiniz şekilde çözülmüştür.
iyi çalışmalar.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
merhaba ,
şöyle bir durum var,
sunucudan çektiğim mailerin silinmesini istiyorum bunun için neyapabilirm şu an POP3 sunucusunda kalıyor outook ta olduğu gibi silinmiyor.
Teşekkürler.
şöyle bir durum var,
sunucudan çektiğim mailerin silinmesini istiyorum bunun için neyapabilirm şu an POP3 sunucusunda kalıyor outook ta olduğu gibi silinmiyor.
Teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Kod: Tümünü seç
procedure TfrmMain.DeleteExecute(Sender: TObject);
begin
if lvHeaders.Selected <> nil then
begin
Showbusy(true);
POP.Delete(lvHeaders.Selected.Index + 1);
lvHeaders.Selected.ImageIndex := 3;
Showbusy(false);
end;
end;
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
merhaba arkadaşlar,
bu eklentili maillerle başım tekrar derde düştü ,
aşağıdaki gibi bir yapıyla belirttiğim MailAdresinden gelen mailllerin eklentilerinin olup olmadığına bakıyorum varsa belirttiğim konuma kaydına sağlamaya çalışıyorum ama gönderdiğim mailde eklenti olmasına rağmen aşağıdaki koda bakacak olursak ,
if (XMLMesaj.MessageParts.Items[k] is TIdAttachment) then satırında eklentili maillerde MessagePart.Count bana 2 döndürüyor ama 0 ve 1 indislerdeki MessagePartların ikisindede yukarıdaki Karşılaştırma TIdAttachment olmadığını söylüyor herhangi bir hata almıyorum ama mesajlardaki eklentileri anlayamıyor.
teşekkürler.
bu eklentili maillerle başım tekrar derde düştü ,
aşağıdaki gibi bir yapıyla belirttiğim MailAdresinden gelen mailllerin eklentilerinin olup olmadığına bakıyorum varsa belirttiğim konuma kaydına sağlamaya çalışıyorum ama gönderdiğim mailde eklenti olmasına rağmen aşağıdaki koda bakacak olursak ,
Kod: Tümünü seç
procedure Txmlmenu.RetriveMessagesOnMailBox;
var
i,k:integer;
begin
Application.ProcessMessages;
MailSayisi:=XMLKutu.CheckMessages;
ProgressBar1.Max:=MailSayisi;
ProgressBar1.Position:=0;
for i:=1 to MailSayisi do
begin
XMLMesaj.Clear;
XMLKutu.RetrieveHeader(i,XMLMesaj);
if XMLMesaj.From.Address=mail then
begin
XMLMesaj.Clear;
XMLKutu.Retrieve(i,XMLMesaj);
for k:=0 to XMLMesaj.MessageParts.Count-1 do
begin
if (XMLMesaj.MessageParts.Items[k] is TIdAttachment) then
TIdAttachment(XMLMesaj.MessageParts.Items[k]).SaveToFile(gelkonum+'\'+TIdAttachment(XMLMesaj.MessageParts.Items[k]).FileName);
end;
end;
ProgressBar1.Position:=i;
end;
if (XMLMesaj.MessageParts.Items[k] is TIdAttachment) then satırında eklentili maillerde MessagePart.Count bana 2 döndürüyor ama 0 ve 1 indislerdeki MessagePartların ikisindede yukarıdaki Karşılaştırma TIdAttachment olmadığını söylüyor herhangi bir hata almıyorum ama mesajlardaki eklentileri anlayamıyor.
teşekkürler.
Volkan KAMADAN
www.polisoft.com.tr
www.polisoft.com.tr
Kod: Tümünü seç
//Setup attachments list
ShowStatus('Decoding attachments (' + IntToStr(Msg.MessageParts.Count) + ')');
for intIndex := 0 to Pred(Msg.MessageParts.Count) do
begin
if (Msg.MessageParts.Items[intIndex] is TIdAttachment) then
begin //general attachment
li := lvMessageParts.Items.Add;
li.ImageIndex := 8;
li.Caption := TIdAttachment(Msg.MessageParts.Items[intIndex]).Filename;
// li.SubItems.Add(TIdAttachment(Msg.MessageParts.Items[intIndex]).ContentType);
end
else
begin //body text
if Msg.MessageParts.Items[intIndex] is TIdText then
begin
Memo1.Lines.Clear;
Memo1.Lines.AddStrings(TIdText(Msg.MessageParts.Items[intIndex]).Body);
end
end;
Tlistitem;li
İnteger ;intindex
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************
Kamil odur ki; koya dünyada bir eser,
Eseri olmayanın, yerinde yeller eser.
***********************************