POP3 mit Synapse

Alle Fragen zur Netzwerkkommunikation

Re: POP3 mit Synapse

Beitragvon TT73GP7 » 10. Aug 2017, 09:01 Re: POP3 mit Synapse

Hallo zusammen,

mal wieder mein Lieblingsthema Namens E-Mail
also eine Liste der Emails bekomme ich raus.

ich bekomme auch die Texte der Einzelnen Emails raus

Code: Alles auswählen
  mmess.Lines.Assign(pop.FullResult)
  mmess.DecodeMessage
 
  y:=mmess.MessagePart.PartBody.Count;
for x:=0 to y-1 do
  memo1.Lines.Add(DecodeQuotedPrintable(mmess.MessagePart.PartBody[x]));



Gut :)
nur Frage ich mich immer noch ob ich auch Anhänge rausbekomme?
beim versenden habe ich ja die Möglichkeit mit AddPartBinaryFromFile
gibt es auch sowas in der Art um aus der Message rauszubekommen?

und wie Lösche ich E-Mails auf dem Server?

VG
Igor
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

Beitragvon theo » 10. Aug 2017, 10:38 Re: POP3 mit Synapse

TT73GP7 hat geschrieben:und wie Lösche ich E-Mails auf dem Server?


Das geht mit Dele. Man muss eingeloggt sein.
http://synapse.ararat.cz/doc/help/pop3s ... .html#Dele

Die Sache mit dem Attachment ist etwas schwieriger.
Vielleicht hilft das: https://stackoverflow.com/questions/139 ... -tmimemess
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon TT73GP7 » 22. Aug 2017, 10:52 Re: POP3 mit Synapse

hach und wieder mails,

also irgendwie scheint das noch nicht das richtige zusein so die Mailbodys abzuholen.

Code: Alles auswählen
 
pop.Stat;     
sc := pop.statcount;
for k := 1 to sc do  begin     
  pop.Retr(k);
  msg.Lines.Assign(pop.FullResult);     
  msg.DecodeMessage;     
  memo1.Lines.Add('  Date:       ' + FormatDateTime('DD.MM.YYYY    HH:MM', msg.Header.Date));   
  memo1.Lines.Add('  from:       ' + msg.Header.From);
  memo1.Lines.Add('  subject:    ' + msg.Header.Subject);
  memo1.Lines.Add('  organisation: ' + msg.Header.Organization);
  memo1.Lines.Add('  messageid:    ' + msg.Header.MessageID);
  memo1.Lines.Add(' ');
 
  y := msg.MessagePart.PartBody.Count;
  for k := 1 to sc do  begin
    memo1.Lines.Add(DecodeQuotedPrintable(msg.MessagePart.PartBody[x]));   
  end;
end;
 


Teilweise geht es ganz gut
nur es kommen keine HTML Mails an :(
Teilweise kommen die Mails sehr kryptisch an
Teilweise Textnachrichten gehen in der Regel recht gut (es sei denn Sie werden mit Outlook verschickt da gehen auch reine Textnachrichten nicht)

an was kann das liegen?
welche Alternativen gibt es?

ich will endlich das Thema von Tisch haben :(
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

Beitragvon theo » 25. Aug 2017, 09:50 Re: POP3 mit Synapse

Tja, MIME ist eine komplizierte Sache.
Ich kann dir mal meinen Code zeigen, den ich verwende um die Mailtexte einfach anzuzeigen. Dabei wird falls nötig auch der HTML Teil in Text umgewandelt.
Bei Attachments wird nur der Dateiname angezeigt. Auskommentiert ist der Teil zum speichern.

Falls dir das hilft: Sehr gut. Ist aber natürlich nicht vollständig.
Falls nicht, dann lass es. Ohne Eigeninitiative kommst du hierbei nicht weiter und ich werde dich nicht durch den Dschungel führen können. :wink:

Code: Alles auswählen
function TPop3Account.RetrMail(num: integer): string;
var PlainTxt: TStringList;
  HaveText, HasAttachments: Boolean;
  Mime: TPop3Message; //Abkömmling von TMimeMess. Der Teil sollte auch mit der Elternklasse klappen.
 
  procedure _DecodePart(Part: TMimePart);
  var i: integer;
    S: string;
    PP, PS: string;
  begin
    Part.DecomposeParts;
    Part.DecodePart;
    PP := UpperCase(Part.Primary);
    PS := UpperCase(Part.Secondary);
 
    if PP <> 'MULTIPART' then
    begin
      Part.DecodedLines.Seek(0, soFromBeginning);
 
      if PP = 'TEXT' then
      begin
        if (PS = 'PLAIN') then
        begin
          SetLength(S, Part.DecodedLines.Size);
          Part.DecodedLines.Read(S[1], Length(S));
          PlainTxt.Add(S);
          HaveText := true;
        end;
        if (PS = 'HTML') and (not HaveText) then
        begin
          SetLength(S, Part.DecodedLines.Size);
          Part.DecodedLines.Read(S[1], Length(S));
          PlainTxt.Add(RemoveHTMLTags(S));
        end;
      end else
      begin
        if Part.FileName <> '' then
        begin
          if not HasAttachments then
          begin
            PlainTxt.Add('Attachments:');
            HasAttachments := true;
          end;
          //Fn := SavePath + Part.Filename;
          //Part.DecodedLines.SaveToFile(Fn);
          PlainTxt.Add('-> ' + Part.FileName);
        end;
      end;
    end;
 
    for i := 0 to Part.GetSubPartCount - 1 do
    begin
      _DecodePart(Part.GetSubPart(i)); //Rekursiver Aufruf weil Multipart geschachtelt sein kann.
    end;
  end;
 
 
begin
  HaveText := false;
  HasAttachments := false;
  if (fPop3Send.Login) then
  begin
    if fPop3Send.Retr(num) then
    begin
      Mime := TPop3Message.Create;
      Mime.Lines.Assign(fPop3Send.FullResult);
      fPop3Send.FullResult.Clear;
      try
        Mime.DecodeMessage;
        PlainTxt := TStringList.create;
        _DecodePart(Mime.MessagePart); //Rekursiv alle parts dekodieren
        Result := PlainTxt.text;
      finally
        PlainTxt.free;
        Mime.free;
      end;
    end;
    if fPop3Send.Logout then
    begin
    end;
  end;
end;   
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

• Themenende •
Vorherige

Zurück zu Netzwerk



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried