Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   IDMessage und Umlaute in der Emailadresse (https://www.delphipraxis.net/209200-idmessage-und-umlaute-der-emailadresse.html)

gaisser 8. Nov 2021 14:03

IDMessage und Umlaute in der Emailadresse
 
Hi Zusammen,

wie stelle ich es an, kommt immer ne Fehlermeldung (Syntax Erro in paramters or arguments)

himitsu 8. Nov 2021 14:12

AW: IDMessage und Umlaute in der Emailadresse
 
Solche Zeichen "richtig" codieren?


punycode

gaisser 8. Nov 2021 14:23

AW: IDMessage und Umlaute in der Emailadresse
 
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);

generic 8. Nov 2021 15:13

AW: IDMessage und Umlaute in der Emailadresse
 
Emailadressen sind immer ASCII.
D.h. wenn du Umlaute in der Emailadresse verwenden willst MUSST du punycode (https://de.wikipedia.org/wiki/Punycode) nutzen.

himitsu 8. Nov 2021 15:50

AW: IDMessage und Umlaute in der Emailadresse
 
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.

gaisser 8. Nov 2021 15:59

AW: IDMessage und Umlaute in der Emailadresse
 
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]);

Incocnito 9. Nov 2021 07:03

AW: IDMessage und Umlaute in der Emailadresse
 
Du musst doch das "xn--" nicht rausnehmen,
das kann ich mir echt nicht vorstellen.
War aber ewig her, dass ich Puny-Umsetzung gemacht habe.

gaisser 9. Nov 2021 07:32

AW: IDMessage und Umlaute in der Emailadresse
 
Kommt halt immer die Meldung das Mailbox nicht erreichbar ist, obwohl es diese Mailadresse gibt. Im Outlook kann ich ohne Probleme an die Mailadresse senden.
Das mit dem Replace hab ich im Web gefunden.

Blup 9. Nov 2021 10:20

AW: IDMessage und Umlaute in der Emailadresse
 
Ich vermute das man nur den Teil, der den Domainname repräsentiert (zwischen @ und Punkt), kodieren muss. Nicht die ganze Adresse und auch nicht alle Adressen gemeinsam bei mehreren Empfängern. Wie sollte ohne "xn--" erkannt werden, das es sich um eine kodierte Adresse handelt?

himitsu 9. Nov 2021 13:26

AW: IDMessage und Umlaute in der Emailadresse
 
Ja, alle teile einzeln kodiert
doamin, subdomain, mail/name und der Pfad nach der Domain (bei URLs) .... und das auch jeweils mit unterschiedlichen Codierungen.

Zitat:

Vermuten
Im Notfall kann man einfach mal eine eMail versenden/empfangen, welche soeinem Schema entspricht ... mit einem anderem Mailprogramm.

Dann via Indy nachsehn, also die Mail runterladen und gucken war überall in den Property drin steht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:02 Uhr.
Seite 1 von 2  1 2      

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