AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IdSMTP und bcc Fehler

Ein Thema von josefkoller · begonnen am 23. Feb 2013 · letzter Beitrag vom 24. Feb 2013
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#11

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 13:42
Eventuell solltest du von Indy weg und zu Ararat Synapse hin.

Da hast du dem Mail-Versand wesentlich besser im Griff ...

Delphi-Quellcode:
LSmtp : TSmtpSend;
LReceivers : TStringList;
LMail : TStringList;

// Wer sendet
if not LSmtp.MailFrom( LFromAddress, LMailSize ) then
  raise Exception.CreateFmt('SMTP.MailFrom(%s,%d) > %s ',[LFromAddress,LMailSize,LStmp.ResultString]);

// An wen wird gesendet
for LReceiver in LReceivers do
  // Jede Empfänger-Adresse wird einzeln an den Server gesendet
  // Somit bekommt man auch für jede Adresse eine Rückmeldung,
  // ob dieser Empfänger akzeptiert wird
  if not LSmtp.MailTo( LReceiver ) then
    begin
      // Mail-Adresse merken, oder was auch immer machen
    end;

// Was wird gesendet
if not LSmtp.MailData( LMail ) then
  raise Exception.CreateFmt( 'SMTP.MailData > %s',[LSmtp.ResultString] );
BTW: Wer und an wen gesendet wird muss nichts mit dem zu tun haben, was in der Mail selber drin steht.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#12

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 13:49
Wenn das beim Send auftritt und Du diese meinst:
Code:
Meldung: '5.52 <keine>: Recipient adress rejected: need fully-qualified adress'.
Dann ist das keine Meldung von Indy, sondern vom eingesetzten SMTP Server. Auf die Prüfungen die dort durchgeführt werden, hast Du keinen Zugriff und auch kein Wissen darüber. Einige Server prüfen z.b. die Erreichbarkeit der Domain, andere sogar die Zustellbarkeit. Es könnte auch sein dass durch die große BCC Liste eine fest eingestellte maximale Headergröße des Servers überschritten wird etc. Wenn es sich tatsächlich um Fehler in den Mailadressen handelt, dann wirst Du ja die entsprechenden Einzelmails rejected bekommen und kannst dann evtl. wie bereits vorgeschlagen eine Prüfroutine über die Adressliste laufen lassen.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#13

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 14:34
Hier mal ein angepasster Quelltext mit synapse für deine Umgebung. Damit solltest du die fehlerhaften Mails besser herausfinden können.
Delphi-Quellcode:
type
  TForm1 = class( TForm )
    Button1 : TButton;
    sdbMemo1 : TMemo;
    ListBox1 : TListBox;
    procedure Button1Click( Sender : TObject );
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1 : TForm1;

implementation

{$R *.dfm}

uses
  smtpsend, mimemess, // ararat synapse units
  DMIMKER;

procedure TForm1.Button1Click( Sender : TObject );
var
  LMail : TMimeMess;
  LSmtp : TSMTPSend;
begin
  fDMIMKER.ZQMailverbindung.Open;
  try

    fDMIMKER.ZQAdressenmailbcc.Open;
    try

      LSmtp := TSMTPSend.Create;
      try

        LSmtp.TargetHost := fDMIMKER.ZQMailverbindungmailausgangsserver.AsString;
        LSmtp.TargetPort := '25';
        LSmtp.UserName := fDMIMKER.ZQMailverbindungmailmailadresse.AsString;
        LSmtp.Password := fDMIMKER.ZQMailverbindungmailpasswort.AsString;

        LMail := TMimeMess.Create;
        try

          // Header
          LMail.Header.From := fDMIMKER.ZQMailverbindungmailmailadresse.AsString;
          LMail.Header.Subject := 'Test-Mail';
          LMail.Header.Priority := MP_normal;

          // Body
          LMail.AddPartHTML( sdbMemo1.Lines, nil );

          // Mail codieren
          LMail.EncodeMessage;

          if not LSmtp.Login
          then
            raise Exception.CreateFmt( 'SMTP.Login > %s', [LSmtp.ResultString] );

          try

            if not LSmtp.MailFrom( fDMIMKER.ZQMailverbindungmailmailadresse.AsString, 0 )
            then
              raise Exception.CreateFmt( 'SMTP.MailFrom > %s', [LSmtp.ResultString] );

            fDMIMKER.ZQAdressenmailbcc.First;

            while not fDMIMKER.ZQAdressenmailbcc.Eof do
              begin

                if not LSmtp.MailTo( fDMIMKER.ZQAdressenmailbccadrmailbccempfaenger.AsString )
                then
                  // fehlerhafte Mailadressen werden in eine Listbox ausgegeben
                  ListBox1.Items.Add( fDMIMKER.ZQAdressenmailbccadrmailbccempfaenger.AsString + ' > ' + LSmtp.ResultString );

                fDMIMKER.ZQAdressenmailbcc.Next;
              end;

            if not LSmtp.MailData( LMail.Lines )
            then
              raise Exception.CreateFmt( 'SMTP.MailData > %s', [LSmtp.ResultString] );

          finally

            if not LSmtp.Logout
            then
              raise Exception.CreateFmt( 'SMTP.Logout > %s', [LSmtp.ResultString] );

          end;

        finally
          LMail.Free;
        end;

      finally
        LSmtp.Free;
      end;

    finally
      fDMIMKER.ZQAdressenmailbcc.Close;
    end;

  finally
    fDMIMKER.ZQMailverbindung.Close;
  end;
end;

end.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#14

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 18:22
Hallo,

ich glaub, ich hab den Fehler.

Ich hab in der bcc Liste auch meine EMailadresse mit eingetragen. Diese Adresse ist identisch mit der Adresse, die ich in

IdMessage1.From.Address :=

stehen habe.

Meine eigene Adresse hab ich deswegen mit rein, weil ich das Ergebnis der Mail sehen wollte.
Das scheint die Exception auszulösen.

ich hab meine eigene Adresse aus der bcc-Liste raus und schon funktioniert es.

Delphi-Quellcode:
      try
        try
          IdMessage1.ContentType := 'text/html';
          IdSMTP1.AuthenticationType := atlogin;
          IdMessage1.Body := sdbMemo1.Lines; // Text
          IdMessage1.From.Address :=
            fdmimker.ZQMailverbindungMAILMAILADRESSE.AsString; // eigene EMailadresse
          IdMessage1.subject := sdbedit1.text; // Betreff
          IdMessage1.Priority := mpNormal;
          Application.ProcessMessages;

          //bcc Part
          s := '';
          fDMIMKER.ZQAdressenmailbcc.First;
          while not fDMIMKER.ZQAdressenmailbcc.Eof do
          begin
            s := s + IdMessage1.BccList.EMailAddresses +
              fdmimker.ZQAdressenmailbccADRMAILBCCEMPFAENGER.AsString+' ,';
            fDMIMKER.ZQAdressenmailbcc.Next;
          end;

          IdMessage1.BccList.EMailAddresses := s;
          IdMessage1.ReceiptRecipient.Address:= '';//wird autom mit'undisclosed-recipients' gefüllt;
  
          IdSMTP1.Username :=
            fDMIMKER.ZQMailverbindungMAILMAILADRESSE.AsString;
          IdSMTP1.Password := fdmimker.ZQMailverbindungMAILPASSWORT.AsString;
          IdSMTP1.Host :=
            fdmimker.ZQMailverbindungMAILAUSGANGSSERVER.AsString;

          IdSMTP1.Connect;
          Application.ProcessMessages;
          IdSMTP1.Send(IdMessage1);
        except
          on E: Exception do
          begin
           showmessage(e.Message);
          end;
        end;
     finally
       IdSMTP1.Disconnect;
     end;
Die vielen Application.Processmessages sind nur drin, damit mein Fortschrittsbalken zwischendurch "aktualisiert" wird.

Also die IdMessage1.From.Address nicht mit in die bcc-Liste.

Vielleicht braucht diesen Hinweis ja mal wer. (funktioniert so mit Indy 9);

Ciao

Josef
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#15

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 19:39
Sieht so aus als ob Indy bei Mailadressen in der gleichen Domain (wie der Sender) diese abtrennt.
Das erklärt dann auch die Fehlermeldung
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
josefkoller

Registriert seit: 22. Okt 2012
49 Beiträge
 
#16

AW: IdSMTP und bcc Fehler

  Alt 24. Feb 2013, 21:48
Hallo,

bevor ich es wieder vergessen:

Hast einen tollen Spruch in Deiner Signatur. In meinem Fall trifft es nun ja tatsächlich den Kern der Sache.

Danke auch für den "Ausweich Code" mit Synapse. Ich hab auch schon daran gedacht, von Indy wegzugehen.

Synapse oder ICS würde sich anbieten. Ich scheu mich aber, wegen der Umstellerei.

Ich hab alles (Datenimport aus einer Web DB, die Mailverschickerei und solche Sachen) über Indy realisiert.

Deine Vermutung, daß die SMpt Komponente was aus den übergebenen Mailstrings rausschneidet, scheint tatsächlich der Grund meines Übels zu sein.

Wenn man z. b. die Eigenschaft:

IdMessage1.ReceiptRecipient.Address := mit dem Wert 'undisclosed-recipients' belegt, wird dieser String ebenfalls bei einer existierenden bcc-Liste entfernt.

Wahrscheinlich wurde auch in der bcc-Liste der doppelte info@josefkoller.de entfernt. Dann bleibt ein Komma am Anfang des Strings stehen. Und schon passiert es.

Z. b. bei meiner rumprobierei von mir so zusammen gestellt:
Code:
'info@josefkoller.de,test@t-online.de,test@gmx.de'
Mit breakpoint in der smpt.pas bei der Send Procedure nochmals überprüft:
Code:
',test@t-online.de, test@gmx.de'
Das Komma bleibt am Anfang stehen. Das kann ja nicht funktionieren.

Nochmals besten Dank für Deine Mühe.

ciao

Josef
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 20:28 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