Zalaczniki maila

0

HI. Chcialbym napisac programik, ktory sciagnie mi wszystkie maile ze skrzynki (lacznie z zalacznikami).
Moj problem polega na tym ze jak pobieram maila za pomoca komponentu TIdMessage to nazwa zalacznika jest nastepujaca:
'=?UTF-8?Q?Lab=5FSprawozdanie_(JOS).doc?='
a powinna byc :
"Lab_Sprawozdanie_(JOS).doc.
Czy ktos moglby mi wytlumaczyc dlaczego tak jest i jak to naprawic ??
Musze wspomniec ze z temacie wiadomosci tez takie cos wystepuje, niestety.
z gory wielkie dzieki

0

jak chcesz mogę wkleić kod do odbierania wiadomości ale przy pomocy synapse, bo jak dla mnie indy to badziew

0

Chodzi mi przede wszystkim o mozliwosc sciagniecia wszystkich maili ze skrzynki na dysk w takiej postaci jak sa wyswietlane na stronce (czyli jezeli zalacznik ma nazwe "zalacznik.doc" to zeby tak sie nazywal plik po sciagnieciu.). Jezeli masz mozliwosc to wklej ten kod. bede bardzo wdzieczny :)

0

synapse, synapse...

Co do załączników w INDY a nie w jakimś syŁnApśę to cosik takiego u mnie działa w 100%

var IleWiad, IleZal: integer;
      SaveAtt: string;
      POP3: TidPOP3;
      Mes: TidMessage;

[...]

IleWiad:= POP3.CheckMessages;
while IleWiad > 0 do
 begin
    Mes.Clear;
    POP3.Retrieve(IleWiad,Mes); 
     // odbieranie zalocznikow

     IleZal:= Mes.MessageParts.Count - 1;      
     for i := IleZal downto 0 do
       begin
           if (Mes.MessageParts.Items[IleZal] is TIdAttachment) then
              begin                    
			SaveATT:= TIdAttachment(Mes.MessageParts.Items[IleZal]).Filename; 
			TIdAttachment(Mes.MessageParts.Items[IleZal]).SaveToFile(ExtractFilePath(ParamStr(0)) +'C:\Temp\' + SaveATT);
              end;
            Dec (IleZal);
        end;
   Dec (IleWiad);
 end;

[...]

0

Dokladnie tak robie tylko ze ta funkcja : TIdAttachment(Mes.MessageParts.Items[IleZal]).Filename; zwraca mi oprocz nazwy zalacznika, inne jakies dziwne znaki, tak jak napisalem wyzej i w tym jest caly problem. Zeby bylo jasniej probuje sciagnac maile z o2.pl. Nawiasem mowiac nie mam zielonego pojecia jak sie polaczyc z mail.yahoo.com czy gmail.com.

0

Problem leży po stronie o2.pl. Przy wysyłaniu maila dodaje on jakieś swoje znaczniki. Spróbuj wysłać maila np. z poczty gmail czy onetu na twoje konto na o2, wtedy wszystko będzie ok.

Co do łączenia się z yahoo i gmail to te poczty mają inne porty smtp i pop3

0
piochu napisał(a)

synapse, synapse...

Co do załączników w INDY a nie w jakimś syŁnApśę to cosik takiego u mnie działa w 100%
nie masz pojęcia to się nie wypowiadaj. Miałem do czynienia z łindiy i potwierdza się kolejny raz zasada jak coś jest do wszystkiego to jest do niczego.

pop := TPOP3Send.Create;
  MimeMsg := TMimeMess.Create;
  try
    pop.AuthType := POP3AuthAll;
    pop.TargetHost := Host;
    pop.TargetPort := Port;
    pop.UserName := UserName;
    pop.Password := UserPass;
    if pop.Login then
    begin
      if pop.List(0) then
      begin
        for i := 0 to pop.FullResult.Count - 1 do
        begin
          if pop.Retr(i + 1) then
          begin
            MimeMsg.Lines.Assign(pop.FullResult);
            MimeMsg.DecodeMessage;

            MimeParts := MimeMsg.MessagePart;

            Subject := MimeMsg.Header.Subject;
            Ct.Assign(MimeMsg.Header.ToList);

            case MimeParts.PrimaryCode of
              MP_TEXT:
              begin
                MimeParts.DecodePart;
                SetLength(s, MimeParts.DecodedLines.Size);
                MimeParts.DecodedLines.Read(Pointer(s)^, MimeParts.DecodedLines.Size);
                Body := ReplaceCRLF(s); //replaceCRLF to moja funkcja, która zamienia nixowe i macowe końce lini na windowsowe
              end;
              MP_MULTIPART:
              begin
                for j := 0 to MimeParts.GetSubPartCount - 1 do
                begin
                  MimePart := MimeParts.GetSubPart(j);
                  MimePart.DecodePart;
                  if Length(Trim(MimePart.FileName)) = 0 then
                  begin
                    SetLength(s, MimePart.DecodedLines.Size);
                    MimePart.DecodedLines.Read(Pointer(s)^, MimePart.DecodedLines.Size);
                    Body := ReplaceCRLF(s);
                  end
                  else begin
                    AttachmentName := MimePart.FileName;
                    MimePart.DecodedLines //tu masz stream z załącznikiem
                  end;
                end;
              end;
            end;
            pop.Dele(i + 1);
          end;
        end;
      end;
      pop.Logout;
    end;
  finally
    FreeAndNil(MimeMsg);
    FreeAndNil(pop);
  end;
0

A te synapse jest gdzies na zakladce jakiejs ??. Posiadam Delphi 7. ale nigdzie jakos tego nie widze.

0

Tu masz synapse http://www.torry.net/vcl/internet/packs/synapse.zip
A tu ktoś miał ten sam problem co Ty: http://coding.derkeiler.com/Archive/Delphi/alt.comp.lang.borland-delphi/2007-06/msg00005.html

Ewentualnie możesz wykorzystać cosik takiego:

function BezKrzakow (var Tekst: string): String;
begin
 Tekst:= AnsiReplaceStr (Tekst,'=?UTF-8?Q?','');
 Tekst:= AnsiReplaceStr (Tekst,'?=','');
 Tekst:= AnsiReplaceStr (Tekst,'=?','');
 Tekst:= AnsiReplaceStr (Tekst,'=_UTF-8_Q_','');
 Tekst:= AnsiReplaceStr (Tekst,'_=','');
 Result:= Tekst;
end;

Z nazwami załączników sobie radzi...

1 użytkowników online, w tym zalogowanych: 0, gości: 1