AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein IDMessage und Umlaute in der Emailadresse

IDMessage und Umlaute in der Emailadresse

Ein Thema von gaisser · begonnen am 8. Nov 2021 · letzter Beitrag vom 11. Nov 2021
Antwort Antwort
gaisser

Registriert seit: 7. Sep 2003
Ort: Dotternhausen(Baden Württemberg)
64 Beiträge
 
Delphi 10.4 Sydney
 
#1

IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 14:03
Hi Zusammen,

wie stelle ich es an, kommt immer ne Fehlermeldung (Syntax Erro in paramters or arguments)
Jochen
Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#2

AW: IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 14:12
Solche Zeichen "richtig" codieren?


punycode
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
gaisser

Registriert seit: 7. Sep 2003
Ort: Dotternhausen(Baden Württemberg)
64 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 14:23
Mit UTF-8, ISO-8859-1 und windows-1252 geht es leider nicht.

Anbei ein Auszug

Delphi-Quellcode:
  try
    IdMessage.MessageParts.Clear;
    IdMessage.Date := Now;
    // IdMessage.CharSet := 'ISO-8859-1';
    IdMessage.CharSet := CbCharSet.Text;
    IdMessage.ContentType := 'multipart/related + multipart/mixed + text/plain ' +
      '+ text/html + multipart/alternative + application/pdf ';
    IdMessage.AttachmentTempDirectory := SysUtils.GetEnvironmentVariable('temp');
    SL := TStringList.Create;

    SL.Text := HTMLText;
    MailText := betreff;
    with TIdMessageBuilderHtml.Create do
    begin
      try
        // Wenn HTML Mail ist
        if frmEinstellungen.cbHTML.Checked = True then
        begin
          html.Text := SL.Text;
        end
        else // HTML Mails
          PlainText.Text := SL.Text;
        // Ende Images herausfinden
        // Normale Anhänge hinzufügen
        if FileExists(xAnhang) then
          Attachments.Add(xAnhang);
        if FileExists(frmHaupt.xFileName1) then
          Attachments.Add(frmHaupt.xFileName1);
        if FileExists(frmHaupt.xFileName2) then
          Attachments.Add(frmHaupt.xFileName2);
        if FileExists(frmHaupt.xFileName3) then
          Attachments.Add(frmHaupt.xFileName3);
        if FileExists(frmHaupt.xFileName4) then
          Attachments.Add(frmHaupt.xFileName4);
        if FileExists(frmHaupt.xFileName5) then
          Attachments.Add(frmHaupt.xFileName5);
        // Ende Normale Anhänge

        FillMessage(IdMessage);
      finally
        Free;
      end;
    end;
    IdMessage.Subject := MailText;
    IdMessage.From.Address := frmSetup.Email.Text;
    IdMessage.From.Name := EdName.Text;
    if EdReplayTo.Text <> 'then
      IdMessage.ReplyTo.EMailAddresses := EdReplayTo.Text
    else
      IdMessage.ReplyTo.EMailAddresses := frmSetup.Email.Text;
    IdMessage.CharSet := CbCharSet.Text;
    IdMessage.Recipients.EMailAddresses := empfaenger;
    if BCC <> 'then
      IdMessage.BccList.EMailAddresses := BCC;

    IdSMTP.Host := frmSetup.SMTPServer.Text;
    IdSMTP.Username := frmSetup.edtAccount.Text;
    IdSMTP.Password := frmSetup.edtPassword.Text;
    IdSMTP.Port := StrToInt(frmSetup.SMTPPort.Text);

    xAuthCange;

    IdSMTP.Connect;
    if IdSMTP.Authenticate then
    begin
      IdSMTP.Send(IdMessage);
    end
    else
      MessageDlg('Login fehlerhaft', mtError, [mbOk], 0, mbOk);
Jochen
Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!!
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#4

AW: IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 15:13
Emailadressen sind immer ASCII.
D.h. wenn du Umlaute in der Emailadresse verwenden willst MUSST du punycode (https://de.wikipedia.org/wiki/Punycode) nutzen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.339 Beiträge
 
Delphi 12 Athens
 
#5

AW: IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 15:50
Na ja, im Grunde hätte auch der Hersteller (Indy) innerhalb der Komponente dieses Encoding machen können.

Hat er aber nicht, also muß man selber ran.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
gaisser

Registriert seit: 7. Sep 2003
Ort: Dotternhausen(Baden Württemberg)
64 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: IDMessage und Umlaute in der Emailadresse

  Alt 8. Nov 2021, 15:59
Das funktioniert leider auch nicht, was mach ich falsch?

Delphi-Quellcode:
    IdMessage.Subject := MailText;
    IdMessage.From.Address := StringReplace(Turi.UnicodeToIDNA(frmSetup.Email.Text),'xn--','',[rfReplaceAll]);
    IdMessage.From.Name := EdName.Text;
    if EdReplayTo.Text <> 'then
      IdMessage.ReplyTo.EMailAddresses := StringReplace(Turi.UnicodeToIDNA(EdReplayTo.Text),'xn--','',[rfReplaceAll])
    else
      IdMessage.ReplyTo.EMailAddresses := StringReplace(Turi.UnicodeToIDNA(frmSetup.Email.Text),'xn--','',[rfReplaceAll]);;
    IdMessage.CharSet := CbCharSet.Text;
    IdMessage.Recipients.EMailAddresses := StringReplace(Turi.UnicodeToIDNA(empfaenger),'xn--','',[rfReplaceAll]);
    if BCC <> 'then
      IdMessage.BccList.EMailAddresses := StringReplace(Turi.UnicodeToIDNA(BCC),'xn--','',[rfReplaceAll]);
Jochen
Nicht alles dem System anlasten, meistens sitzt der Fehler vor den Tasten !!!
  Mit Zitat antworten Zitat
Incocnito

Registriert seit: 28. Nov 2016
229 Beiträge
 
#7

AW: IDMessage und Umlaute in der Emailadresse

  Alt 9. Nov 2021, 07:03
Du musst doch das "xn--" nicht rausnehmen,
das kann ich mir echt nicht vorstellen.
War aber ewig her, dass ich Puny-Umsetzung gemacht habe.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#8

AW: IDMessage und Umlaute in der Emailadresse

  Alt 11. Nov 2021, 09:43
Delphi-Quellcode:
   
    IdMessage.Recipients.EMailAddresses := StringReplace(Turi.UnicodeToIDNA(empfaenger),'xn--','',[rfReplaceAll]);
Vorsicht: die UnicodeToIDNA ist dazu da, den Hostnamen zu kodieren. Das ist der Teil der E-Mail-Adresse nach dem @-Zeichen, aber vor der Top-Level-Domäne (z.B. .de).
(Siehe https://docwiki.embarcadero.com/Libr....UnicodeToIDNA)
Der Teil davor darf nicht nach Punycode kodiert werden.
Michael Justin

Geändert von mjustin (11. Nov 2021 um 09:46 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 13:41 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz