Synapse: UTF-8-kodierte E-Mails

Alle Fragen zur Netzwerkkommunikation

Synapse: UTF-8-kodierte E-Mails

Beitragvon Socke » 6. Feb 2016, 22:54 Synapse: UTF-8-kodierte E-Mails

Hallo zusammen,

wie kann ich mit Synapse (TMimeMess) E-Mails erstellen, die in UTF-8 kodiert sind?
Ich verwende FPC 3.1.1; die Eingabetexte liegen in UTF-8 vor.

Grüße
Socke
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon theo » 6. Feb 2016, 23:55 Re: Synapse: UTF-8-kodierte E-Mails

Bin auch nicht mehr sicher.
Hast du es mit CharsetCode o.ä. probiert? http://synapse.ararat.cz/doc/help/mimep ... harsetCode
theo
 
Beiträge: 8042
Registriert: 11. Sep 2006, 18:01

Beitragvon Socke » 7. Feb 2016, 00:02 Re: Synapse: UTF-8-kodierte E-Mails

theo hat geschrieben:Bin auch nicht mehr sicher.
Hast du es mit CharsetCode o.ä. probiert? http://synapse.ararat.cz/doc/help/mimep ... harsetCode

Ja, wobei ich ziemlich mir nicht ganz sicher bin, wie das funktioniert.
Code: Alles auswählen
var
  MailBody: RawByteString;
  sl: TStringList;
  Mime: TMimeMess;
  MessagePart: TMimePart;
begin
  MailBody := Format(MailBody, [stringarg]);
  // Format konvertiert alles zur Systemcodepage, daher zurück nach UTF-8
  SetCodePage(MailBody, CP_UTF8, True);
 
  sl := TStringList.Create;
  try
    sl.Text := MailBody;
    MessagePart := Mime.AddPartText(sl, nil);
    MessagePart.TargetCharset := UTF_8;
    MessagePart.CharsetCode := UTF_8;
    MessagePart.Charset := 'UTF-8';
    MessagePart.ConvertCharset := False;
  finally
    sl.Destroy;
  end;

Edit:
Im Header steht "Content-type: text/plain; charset=ISO-8859-1"; der Text ist zwar UTF-8 kodiert, die Ausgabe als QuotedPrintable ist aber etwas ganz anderes (d.h. weder UTF-8 noch Windows-Systemcodepage).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon theo » 7. Feb 2016, 00:32 Re: Synapse: UTF-8-kodierte E-Mails

K.A. vllt. geht es auch einfacher.
Die Convenience Mail Funktion ist so aufgebaut:

http://sourceforge.net/p/synalist/code/ ... d.pas#l698
theo
 
Beiträge: 8042
Registriert: 11. Sep 2006, 18:01

Beitragvon Socke » 7. Feb 2016, 20:48 Re: Synapse: UTF-8-kodierte E-Mails

theo hat geschrieben:K.A. vllt. geht es auch einfacher.
Die Convenience Mail Funktion ist so aufgebaut:

http://sourceforge.net/p/synalist/code/ ... d.pas#l698

Ich wollte für zehn E-Mails keine zehn Verbindungen öffnen...
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon theo » 7. Feb 2016, 22:57 Re: Synapse: UTF-8-kodierte E-Mails

Socke hat geschrieben:
theo hat geschrieben:K.A. vllt. geht es auch einfacher.
Die Convenience Mail Funktion ist so aufgebaut:

http://sourceforge.net/p/synalist/code/ ... d.pas#l698

Ich wollte für zehn E-Mails keine zehn Verbindungen öffnen...


Verstehe nicht was du meinst.
theo
 
Beiträge: 8042
Registriert: 11. Sep 2006, 18:01

Beitragvon Socke » 7. Feb 2016, 23:37 Re: Synapse: UTF-8-kodierte E-Mails

Der Text wird von Synapse korrekt verarbeitet und die E-Mail korrekt erzeugt. Der Code oben sollte also korrekt sein.

Die Ursache liegt in der Stringkonvertierung von FPC 3.x. :P

Edit: Aktuell wird der Betreff noch als ISO-8859-1 angegeben, obwohl UTF-8 im String enthalten ist. Gibt es hier eine Lösung?

Edit2: Synapse hat eine fest eingebaute Liste an Code Pages, die für den Header verwendet werden; Hier ist UTF-8 per Standard nicht enthalten. Hier kann man einfach UTF-8 hinzufügen.
Code: Alles auswählen
// Datei: synachar.pas, Zeile 170
  {:Default set of charsets for @link(IdealCharsetCoding) function.}
  IdealCharsets: TMimeSetChar =
    [UTF_8, ISO_8859_1, ISO_8859_2, ISO_8859_3, ISO_8859_4, ISO_8859_5,
    ISO_8859_6, ISO_8859_7, ISO_8859_8, ISO_8859_9, ISO_8859_10,
    KOI8_R, KOI8_U
    {$IFNDEF CIL} //error URW778 ??? :-O
    , GB2312, EUC_KR, ISO_2022_JP, EUC_TW
    {$ENDIF}
    ];
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Socke
 
Beiträge: 2497
Registriert: 22. Jul 2008, 18:27
Wohnort: Köln
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 8.1/Debian GNU/Linux/Raspbian/openSUSE | 
CPU-Target: 32bit x86 armhf
Nach oben

Beitragvon Michl » 1. Jan 2017, 14:26 Re: Synapse: UTF-8-kodierte E-Mails

Weil ich eben selber darüber gestolpert bin, für nachfolgende Leser, bei mir geht das Out of the Box durch verwenden von AddPartTextEx statt AddPartText und ohne weitere Konvertierungen:
Code: Alles auswählen
Mime.AddPartTextEx(SLMessageText, Mime.MessagePart, UTF_8, True, ME_8BIT);
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2243
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon TT73GP7 » 11. Jan 2017, 19:29 Re: Synapse: UTF-8-kodierte E-Mails

hach

ich glaube ich habe ein ähnliches Problem.
Mein Problem ist, das in den E-Mails keine umlaute dargestellt werden können.

nur wo "Formatiere" ich die E-Mails anders?

Code: Alles auswählen
 
 
procedure TfrmSendMail.btnSendenClick(Sender: TObject);
var
  MIMEText    : TStrings;
  MIMEPart    : TMimePart;
  MIMEMessage : TMimeMess;
begin
  MIMEText := TStringList.Create;
  MIMEText.Add(edNachricht.Lines.Text);
 
  MIMEMessage := TMimeMess.Create;
 
  with MIMEMessage do
  try
    Header.Date := Now;
    Header.From := lnSQL('Absender', 'SELECT * FROM Mail');
    Header.ToList.Clear;
    Header.ToList.Add(edTo.text); // Empfänger eintragen
    Header.CcList.Clear;
    Header.Subject := edBetreff.text;
 
    MIMEPart := AddPartMultipart('mixed', nil);
 
    AddPartText(MIMEText, MIMEPart);
    AddPartBinaryFromFile(cPDF, MIMEPart);
 
    EncodeMessage;
 
    if SendToRaw(Header.From,
                 Header.ToList.CommaText,
                 cHOST,  // Host eintragen
                 Lines,
                 cUSER,   // Absender eintragen
                 cPasswort)     // Passwort eintragen
    then begin
      ShowMessage('E-mail gesendet.');
    end
    else
      ShowMessage('E-mail nicht gesendet');
  finally
    Free;
    MIMEText.Free;
  end;
  Close;
end;
 
 
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

Beitragvon Michl » 11. Jan 2017, 19:38 Re: Synapse: UTF-8-kodierte E-Mails

Wie zwei Posts weiter oben geschrieben, versuche mal
Code: Alles auswählen
    AddPartText(MIMEText, MIMEPart);
durch
Code: Alles auswählen
    AddPartTextEx(MIMEText, MimePart, UTF_8, True, ME_8BIT);
zu ersetzen.
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2243
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon TT73GP7 » 11. Jan 2017, 19:58 Re: Synapse: UTF-8-kodierte E-Mails

hmm

UTF_8 kennt er nicht
ich muss da doch einfach nur die lazutf8 einbinden oder?
weil das geht auch nicht :(
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

Beitragvon Michl » 11. Jan 2017, 20:18 Re: Synapse: UTF-8-kodierte E-Mails

Du musst
Code: Alles auswählen
uses ..., synachar;
von Synapse einbinden.

PS: Das Tool, was nirgends bei einer Installation von Lazarus bei mir fehlen darf ist Cody (zu finden in den Packages). Einmal installiert fügt es automatisch alle Anforderungen bei einem unbekannten Bezeichner hinzu (wenn dieser schon einmal gefunden wurde, Cody lernt mit). Bsp.:
- versuche dein Projekt zu kompilieren
- Fehlermeldung: Error: Identifier not found "UTF_8"
- Rechtsklick auf diese Fehlermeldung im Nachrichtenfenster
- im Popup "Zeige Cody-Verzeichnis für "UTF_8" " anklicken
- ersten Eintrag wählen
-> fertig ist der Salat
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2243
Registriert: 19. Jun 2012, 11:54
OS, Lazarus, FPC: Win7 Laz 1.7 Trunk FPC 3.1.1 Trunk | 
CPU-Target: 32Bit/64bit
Nach oben

Beitragvon TT73GP7 » 11. Jan 2017, 20:34 Re: Synapse: UTF-8-kodierte E-Mails

Michl hat geschrieben:Du musst
Code: Alles auswählen
uses ..., synachar;
von Synapse einbinden.

PS: Das Tool, was nirgends bei einer Installation von Lazarus bei mir fehlen darf ist Cody (zu finden in den Packages). Einmal installiert fügt es automatisch alle Anforderungen bei einem unbekannten Bezeichner hinzu (wenn dieser schon einmal gefunden wurde, Cody lernt mit). Bsp.:
- versuche dein Projekt zu kompilieren
- Fehlermeldung: Error: Identifier not found "UTF_8"
- Rechtsklick auf diese Fehlermeldung im Nachrichtenfenster
- im Popup "Zeige Cody-Verzeichnis für "UTF_8" " anklicken
- ersten Eintrag wählen
-> fertig ist der Salat



sowas gibt es?

alter spalter
weil ich habe so oft das problem das ich da was vergessen hab und so weiter :)
das muss ich gleich ausprobieren

ich danke dir
TT73GP7
 
Beiträge: 226
Registriert: 29. Mär 2016, 19:45

• Themenende •

Zurück zu Netzwerk



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste

porpoises-institution
accuracy-worried