AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung
Thema durchsuchen
Ansicht
Themen-Optionen

In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

Ein Thema von Kostas · begonnen am 26. Okt 2022 · letzter Beitrag vom 27. Okt 2022
Antwort Antwort
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

  Alt 26. Okt 2022, 22:43
Hallo Zusammen,

ich habe eine aktuelle Delphi Alexandria Installation mit allen Patches.
Ich versende eine Email an eine gmail.com Adresse. Die Email kommt zurück mit den Fehler "Messages missing a valid messageId header are
not 550 5.7.1 accepted."

Ich habe versucht Indy zu aktualisieren, da ich darüber Hinweise im Internet gefunden habe, doch das gelinkt mir nicht. Ich habe die aktuelle Version von GitHub heruntergeladen, Clean_Alexandria.cmd mit Admin rechte ausgeführt, Indy280.groupproj kompiliert und die zwei DesignTime Packages installiert, in den LibPath \core, \System und \Protocls hinzugefügt. Das lief alles Problemfrei.

Beim starten von Delphi kann LivePreview280 und dclIPIndyImapl280.bpl nicht geladen werden.
DevExpress und FastReport habe ich auch deinstalliert da sie Abhängigkeiten haben und versucht sie zu installieren. Doch DevExpress kann einige Packages nicht finden.

Hat es jemand geschafft Indy auf Alexandria zu aktualisieren?
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

  Alt 27. Okt 2022, 15:41
Ich nutze die mitgelieferte Version aus D11.

Hatte gerade erst das selbe Problem bei einem Kunden von uns. Irgendwas hat gmail mitte 2022 geändert, so dass nun diese komische Fehlermelung kommt. Ich glaube eigentlich, dass es ein falscher Fehler ist und eigentlich ein ganz anderer Fehler kommen müsste. Wenn du danach googlest wirst du feststellen, dass ab ca. Juni 22 sehr viel zu diesem Thema gefunden wird. Das Problem ist nicht die Indy Komponente, sondern wie du den Absender verwendest.

Das Problem konnte ich hier so lösen, dass ich als Envelopesender nicht die gmail Adresse verwenden, sondern einen auf dem SMTP Server gültige Email, der auf die selbe IP wie der SMTP Server zurück verweist (SPF Check muss funktionieren). Im eigentlichen Mailheader konnte ich die gmail Adresse drin lassen. Im gleichen Zug habe ich auch eine MsgId erstellt, aber diese allein hat das Problem nicht gelöst. Erst durch Verwendung einer lokalen EMailadresse als Sender, hat es funktioniert.

Das Problem ist nun aber noch, dass der Envelopsender nicht so einfach vom Mailheader (TIdMessage.From) unterschiedlich nutzen kann und man dafür die Kommunikation mit dem SMTP Server selber machen muss. Ich habe die folgende Funktion seit vielen Jahren im Einsatz und kann für dich als Info dienen, wie das gemacht werden könnte:

Delphi-Quellcode:
procedure RFIdSMTPSendMail(ASMTP: TIdSMTP; AMsg: TIdMessage; const AMailFrom: String = '');
var
  DoConnect: Boolean;
  MsgID, s: String;
  p: Integer;

  procedure WriteRecipient(const AEmailAddress: TIdEmailAddressItem);
  begin
    ASMTP.SendCmd('RCPT to:<' + AEMailAddress.Address + '>', [250, 251]);
  end;

  procedure WriteRecipients(AList: TIdEmailAddressList);
  var
    i: integer;
  begin
    for i := 0 to AList.Count - 1 do begin
      WriteRecipient(AList[i]);
    end;
  end;

begin
  DoConnect := not ASMTP.Connected;
  if DoConnect then
    ASMTP.Connect();
  try
    p := Pos('@', AMailFrom);
    if p = 0 then
      s := '@deinedomaene.com'  // <- Anpassen für deine Umgebung. Das muss Bestandteil der MsgId sein.
    else
      s := Copy(AMailFrom, p, 255);
    MsgID := RFDeleteChars(RFGetNewGUID, ['{', '}', '-']) + s;
{$IFDEF INDY10_6}
    AMsg.MsgId := MsgID;
{$ELSE}
    AMsg.Headers.Values['Message-ID'] := '<' + MsgID + '>';
{$ENDIF}

    ASMTP.SendCmd('RSET');
    if AMailFrom <> 'then // Envelopesender abweichend vom MailHeader FROM
      ASMTP.SendCmd('MAIL FROM:<' + AMailFrom + '>', 250)
    else if AMsg.Sender.Address <> 'then
      ASMTP.SendCmd('MAIL FROM:<' + AMsg.Sender.Address + '>', 250)
    else
      ASMTP.SendCmd('MAIL FROM:<' + AMsg.From.Address + '>', 250);
    WriteRecipients(AMsg.Recipients);
    WriteRecipients(AMsg.CCList);
    WriteRecipients(AMsg.BccList);
    ASMTP.SendCmd('DATA', 354);
    AMsg.ExtraHeaders.Values['X-Mailer'] := ASMTP.MailAgent;

    ASMTP.SendMsg(AMsg);
    ASMTP.SendCmd('.', 250);
  finally
    if DoConnect then
      ASMTP.Disconnect;
  end;
end;

Geändert von Rolf Frei (27. Okt 2022 um 15:45 Uhr)
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

  Alt 27. Okt 2022, 16:15
Vielen lieben Dank, werde ich in meiner Umgebung ausprobieren.

Noch ein Hinweis: Aus dem Forum hier habe ich schon mal einen Hinweis bekommen über eine andere Komponenten EmailArchitect. Dabei gib es um Google und Microsoft die auf Auth2 umgestellt haben. EmailArchitect hat das integriert und funktioniert einwandfrei. Wenn ich Emails über EmailArchitect versende, gibt es das aktuelle Problem nicht.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
650 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

  Alt 27. Okt 2022, 17:47
Da weiss ich nicht Bescheid. Aber wenn du die Mails über deinen eigenen Server verschickst, brauchst du kein AUTH login. Das kommt nur zum Zuge, wenn du dich direkt mit dem gmail server verbinden willst oder du da Emals abrufen wills (pop3, etc.). In meinem Fall ist es so, dass der obige Code auf einen Webserver läuf, auf dem auch eine lokaler SMTP Server läuft. Da werden durch einen Shop Emails über den lokalen SMTP Server verschickt. Ob das nun bei dir überhaupt die gleiche Problematik ist, kann ich nicht sagen. In meinem Fall hat es geholfen, dass ich eben nicht die gmail Adresse des Shopbetreibers zum Versenden als Envelops-FROM nutze, sondern ein spzielles EMail das per SPF DNS Eintrag Berechtigung hat, von diesem Server aus EMails zu verschicken.
  Mit Zitat antworten Zitat
Kostas

Registriert seit: 14. Mai 2003
Ort: Gerstrhofen
1.099 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: In Delphi Alexandria Indy aktualisieren wegen Gmail messageID Fehlermeldung

  Alt 27. Okt 2022, 21:30
Bei mir ist es schon ein Problem da die Software in vielen Vereinen eingesetzt ist. Jeder hat einen andere Provider und auch viel eben Google. Durch die Umstellung von Google auf Auth2 können die Anwender keine Emails mehr über den Google SMTP Server versenden.
Durch die aktuelle Umstellung von Google auf die MessageID oder was auch immer, senden die Anwender z.B. von T-Online aus die Email raus. Alle kommen an außer die die eine Google Mailadresse haben. Die kommen alle wieder zurück mit der entsprechenden Fehlermeldung.
Da ich in Projektarbeit stecke, hatte ich noch keine Zeit Indy durch EmailArchitect zu ersetzen und wollte prüfen ob ich durch aktualisieren von Indy das zweite Problem behoben bekomme. Ich muss jetzt doch Zeit finden für den Umbau auf EmailArchitect.

Vielen Dank nochmals und dir noch eine schöne Zeit.
Gruß Kostas
  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 06:20 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