AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Indy: BCC Liste immer leer bei Server Empfang???
Thema durchsuchen
Ansicht
Themen-Optionen

Indy: BCC Liste immer leer bei Server Empfang???

Ein Thema von Schucki · begonnen am 11. Mär 2009 · letzter Beitrag vom 18. Mär 2009
Antwort Antwort
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#1

Indy: BCC Liste immer leer bei Server Empfang???

  Alt 11. Mär 2009, 10:32
Hallo,

ich habe einen E-Mail Server mit den Indy's (Ver 10.1.5) geschrieben.
Das ist mein Ereigniss wo ich die eMail einsammel.
Mein Problem ist, obwohl das E-Mail Programm eine Weiterleitung an eine BCC Adresse machen soll ist die BCC-Liste immer leer.
Muß man was anderes abfragen?

In "all_rx_add.txt" fehlt immer die BCC Adresse... warum?

Wo findet man die Info über die BCC Adressen?

Vielen Dank für Eure Mühe, Gruß Frank!




Delphi-Quellcode:
{--- MsgReceive ---------------------------------------------------------------}
procedure TfrmMailServer.smtpsMsgReceive(ASender: TIdSMTPServerContext;
                                         AMsg: TStream;
                                         var LAction: TIdDataReply);
var LStream:TFileStream;
    strlMsg,strlWork:TStringList;
    intP:integer;
    strTmp:string;

begin
  strlMsg:=TStringList.Create;
  strlWork:=TStringList.Create;
try {StringList}
  LStream := TFileStream.Create(DAT_TMP_MAIL_RX, fmCreate);
try {LStream}
  // put message contents in LStream...
  LStream.CopyFrom(AMsg, 0);
finally {LStream}
  FreeAndNil(LStream);
end; {LStream}
  strlMsg.LoadFromFile(DAT_TMP_MAIL_RX);
  // Load the message into IdMessage component for an 1:1 copy of the eMail
  msgSmtp.LoadFromFile(DAT_TMP_MAIL_RX, false);

  // strlWork.Add('!mail from:'+msgSmtp.From.Address);
  {From eMail Adresse eintragen...}
  strlWork.Add('mail_from:fromtest@test.de');
  {To eMail Adressen Liste abarbeiten...}
  for intP:=0 to pred(msgSmtp.Recipients.Count) do begin
    strlWork.Add('mail_to:'+Lowercase(msgSmtp.Recipients[intP].Address));
  end;
  {Cc: eMail Adressen Liste abarbeiten...}
  for intP:=0 to pred(msgSmtp.CCList.Count) do begin
    strlWork.Add('mail_to:'+Lowercase(msgSmtp.CCList[intP].Address));
  end;
  {Bcc: eMail Adressen Liste abarbeiten...}
  for intP:=0 to pred(msgSmtp.BccList.Count) do begin
    strlWork.Add('!mail_to:'+Lowercase(msgSmtp.BccList[intP].Address));
  end;

  strlWork.SaveToFile('all_rx_add.txt');

  LAction:=dOk;

finally {StringList}
  FreeAndNil(strlMsg);
  FreeAndNil(strlWork);
end; {StringList}

end;
Frank
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#2

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 11. Mär 2009, 16:15
Womit versendest Du die Mails? Wird der BCC-Teil evtl. vom Client schon als eine eigene Mail verschickt? (Kannst Du den Datenverkehr zwischen Sender (Client) und Empfänger (Dein Server) beobachten?
Dann schau Dir mal den Ablauf an.)

-> RFC 2821 (Simple MailTransfer Protocol) in Verbindung mit RFC2822 (Internet Message Format)
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#3

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 13. Mär 2009, 19:29
Zitat von OG Karotte:
Womit versendest Du die Mails?
mit Opera...

Zitat von OG Karotte:
Wird der BCC-Teil evtl. vom Client schon als eine eigene Mail verschickt?
Das glaube ich nicht, da die Indy Komponente nur eine Mail empfängt. Vielleicht ist es schon so wie du schreibst aber ich gehe dann davon aus das mein Mail Server dann auch 2 oder mehrere E-Mails empfangen müßte oder?

Zitat von OG Karotte:
Kannst Du den Datenverkehr zwischen Sender (Client) und Empfänger (Dein Server) beobachten?
Mit einem zusätzlichen Tool? Habe ich noch nicht gemacht...

Der Inhalt von "AMsg: TStream;" hat auch keine Zeile BCC drin, die fehlt da schon. nun weiß ich nicht ob das stimmt oder wo ich die BCC Daten sonst abfragen soll?

Es muß doch möglich sein wenn ein E-Mail Programm meinem Server eine BCC Message senden möchte das der die auch animmt.

Für jeden Tip sehr dankbar!

Gruß Frank
Frank
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#4

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 13. Mär 2009, 20:25
Wenn ich Dich richtig verstanden habe, dann schickst Du Dir die Mail doch (lokal ?) selbst. D.h. Du hast Deinen Server an Port 25 angebunden. Dann nimmst Du Dir z.B. die TIdServerInterceptLogEvent-Komponente und verbindest die über Intercept (an TIdSMTPServer) mit Deiner Serverkomponente. Im Ereignis des Logs solltest Du nun den gesamten Traffic mitlesen können.

Z.B.:

Delphi-Quellcode:
procedure TfrmMain.IdServerInterceptLogEvent1LogString(
  ASender: TIdServerInterceptLogEvent; const AText: string);
begin
  MyMemo.Lines.Add(AText);
end;
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#5

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 15. Mär 2009, 13:35
Hallo,

ich danke Dir für den Tip.
Also in dem Log scheint es so als ob die SMTPServer Komponente die richtigen Infos bekommt.

Auszug mit den Adressinfos:

127.0.0.1:1239 Recv 15.03.2009 14:22:57: MAIL FROM:<mir@lokal.de><EOL>
127.0.0.1:1239 Sent 15.03.2009 14:22:57: 250 2.1.0 mir@lokal.de Address Okay<EOL>
127.0.0.1:1239 Recv 15.03.2009 14:22:57: RCPT TO:<to@test.de><EOL>
127.0.0.1:1239 Sent 15.03.2009 14:22:57: 250 2.1.5 to@test.de Address Okay<EOL>
127.0.0.1:1239 Recv 15.03.2009 14:22:57: RCPT TO:<ccto@test.de><EOL>
127.0.0.1:1239 Sent 15.03.2009 14:22:57: 250 2.1.5 ccto@test.de Address Okay<EOL>
127.0.0.1:1239 Recv 15.03.2009 14:22:57: RCPT TO:<bccto@test.de><EOL>
127.0.0.1:1239 Sent 15.03.2009 14:22:57: 250 2.1.5 bccto@test.de Address Okay<EOL>
127.0.0.1:1239 Recv 15.03.2009 14:22:57: DATA<EOL>

Also meine "bccto@test.de" Adresse wird dem SMTP Server mitgeteilt. Ähm und nun frag ich mich natürlich warum ich die in der TIDMsg nicht finde?

Muß man noch irgendwas einstellen oder frage ich die Daten noch nicht richtig ab?

Gruß Frank! Problem noch nicht gelöst aber einen Schritt weiter würde ich sagen.
Frank
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#6

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 15. Mär 2009, 17:15
Hallo Frank,

sorry, ich hab' Dich wahrscheinlich ein wenig in die Irre geleitet (hab' selber lange nicht mehr mit eMail-Handling gearbeitet ).

Wenn Du Dir den Rest des Protokolls anschaust, wirst Du sehen, das die eigentliche Nachricht nach dem
Zitat:
354 Start mail input; end with <CRLF>.<CRLF>
erscheint.

Dies ist die Originalnachricht wie sie vom Client übermittelt wird. Bis dahin hat Dein Server nichts an dieser Nachricht geändert!

Zum Ablauf:

Im Part RCPT TO ist es Deine Aufgabe die übermittelten Adressen zu prüfen und entweder zu zulassen oder abzulehnen (bzw. mitteilen, das sie weitergeleitet werden). Da Dir in diesem Schritt (also bei OnRcptTo) ALLE Adressen der Nachricht übermittelt werden, mußt Du sie hier sammeln! Nach Übermittlung der eigentlichen Nachricht kannst Du sie (die Nachricht) speichern (Platte, Datenbank, Memory; völlig egal). I.d.R. liest Du sie in ein IdMessage ein. Hier sind jetzt die Adressen die alle Empfänger sehen dürfen (To und CC Inhalte). Es fehlen, wie Du richtig erkannst, hast die BCC-Adressen. Jetzt brauchst Du "nur noch" die bei OnRcptTo gesammelten Adressen mit denen aus To und CC vergleichen. Die die dort fehlen sind die gesuchten und nun können die benötigten BlindCarbonCopies erstellt werden (Für jeden Empfänger in BCC eine eigene OHNE die Angabe der Anderen !).

Den grundsätzlichen Ablauf kannst Du in den weiter oben verlinkten RFC's nachlesen.

Ich hoffe ich habe das ganze einigermaßen verständlich dargestellt, wenn nicht frag' ruhig...
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 15. Mär 2009, 19:11
Hi,
also wenn ich mich richtg erinnere, dürfen die BCC Adressen NUR im RCPT-TO Befehl auftauchen,
NICHT aber in den Headerzeilen der Message.

Sonst wäre es ja kein Blind Carbon Copy mehr, wenn jeder Empfänger immer noch im Messageheader diese Adressen sehen kann.
Oder irre ich mich da ?

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
OG Karotte
(Gast)

n/a Beiträge
 
#8

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 15. Mär 2009, 19:16
Zitat von thkerkmann:
Oder irre ich mich da ?
Nope
  Mit Zitat antworten Zitat
Schucki

Registriert seit: 17. Jul 2004
158 Beiträge
 
Delphi 2010 Architect
 
#9

Re: Indy: BCC Liste immer leer bei Server Empfang???

  Alt 18. Mär 2009, 14:13
Alles klar... nun läuft es nach der Erklärung habe ich nun meine Adressen im RcptTo Ereigniss eingesammelt.

Problem gelöst und ich bin glücklich!

Nun ist mir auch klar warum in der IdMsg die BCC leer ist... da wird die eigendliche Nachricht eingelesen, ok und die enthält die BCC Info ja nicht damit es BLIND bleiben kann verstehe!!!


Danke!

Frank
Frank
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz