Synapse: UTF-8-kodierte E-Mails
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
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
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
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
Hast du es mit CharsetCode o.ä. probiert? http://synapse.ararat.cz/doc/help/mimep ... harsetCode
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Synapse: UTF-8-kodierte E-Mails
Ja, wobei ich ziemlich mir nicht ganz sicher bin, wie das funktioniert.theo hat geschrieben:Bin auch nicht mehr sicher.
Hast du es mit CharsetCode o.ä. probiert? http://synapse.ararat.cz/doc/help/mimep ... harsetCode
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;
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
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
Die Convenience Mail Funktion ist so aufgebaut:
http://sourceforge.net/p/synalist/code/ ... d.pas#l698
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
Re: Synapse: UTF-8-kodierte E-Mails
Ich wollte für zehn E-Mails keine zehn Verbindungen öffnen...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
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Synapse: UTF-8-kodierte E-Mails
Verstehe nicht was du meinst.Socke hat geschrieben:Ich wollte für zehn E-Mails keine zehn Verbindungen öffnen...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
-
- Lazarusforum e. V.
- Beiträge: 3177
- Registriert: Di 22. Jul 2008, 19:27
- OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
- CPU-Target: 32bit x86 armhf
- Wohnort: Köln
- Kontaktdaten:
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.
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.
Die Ursache liegt in der Stringkonvertierung von FPC 3.x.

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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
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;
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?
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;
Re: Synapse: UTF-8-kodierte E-Mails
Wie zwei Posts weiter oben geschrieben, versuche maldurchzu ersetzen.
Code: Alles auswählen
AddPartText(MIMEText, MIMEPart);
Code: Alles auswählen
AddPartTextEx(MIMEText, MimePart, UTF_8, True, ME_8BIT);
Code: Alles auswählen
type
TLiveSelection = (lsMoney, lsChilds, lsTime);
TLive = Array[0..1] of TLiveSelection;
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
UTF_8 kennt er nicht
ich muss da doch einfach nur die lazutf8 einbinden oder?
weil das geht auch nicht

Re: Synapse: UTF-8-kodierte E-Mails
Du musstvon 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
uses ..., synachar;
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;
Re: Synapse: UTF-8-kodierte E-Mails
Michl hat geschrieben:Du musstvon Synapse einbinden.Code: Alles auswählen
uses ..., synachar;
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