Mail senden mit Synapse - Zeichencodierungsproblem [gelöst]

Alle Fragen zur Netzwerkkommunikation

Mail senden mit Synapse - Zeichencodierungsproblem [gelöst]

Beitragvon AlterMann » 3. Sep 2017, 18:52 Mail senden mit Synapse - Zeichencodierungsproblem [gelöst]

Hallo mal wieder

Ich versuche seit einer geraumen Weile eine einfache Mailsendefunktion in eine vorhandene Applikation zu integrieren.

Dazu öffne ich eine Form in der der Nutzer den Betreff in ein Edit und den Mailtext in ein Memo eingeben kann.
Anschließend wird das so versendet:

Code: Alles auswählen
 
 Edit2.Text := CharsetConversion(Edit2.Text,GetCurCP,ISO_8859_15);
 result := SendToEx(absender,Edit1.Text,Edit2.Text,server,Memo1.Lines,benutzer,passwort);
 


Das Senden funktioniert auch wunderbar, aber: Alle Umlaute werden zu Sonderzeichen verzerrt.

"Testbetreff ä ö ü Ä Ö Ü ß" wird zu "Testbetreff ? ö ? 1/4 ?" ?- Ãœ ß"

Die erste Zeile mit dem CharsetConversion sollte das schon beheben, aber es wird immer schlimmer.
Der Zeichensatz vom Edit2 steht auf DEFAULT_CHARSET

In die function SendToEx in der unit smtpsend von synapse habe ich folgende Zeile eingefügt:

Code: Alles auswählen
 
    t.Insert(0, 'Content-Type: text/plain; charset=iso-8859-15; format=flowed; delsp=yes');
 


Die wird auch in den Header eingefügt, macht's aber nicht besser.

Jemand eine Idee?

Danke für's Lesen
Christian
Zuletzt geändert von AlterMann am 4. Sep 2017, 10:58, insgesamt 1-mal geändert.
Früher war alles besser. Und aus Holz!
AlterMann
 
Beiträge: 201
Registriert: 13. Dez 2009, 09:43
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7prof 64bit - Lazarus 1.6 r51630 FPC 3.0.0 i386-win32-win32/win64 | 
CPU-Target: x86 64Bit
Nach oben

Beitragvon Michl » 3. Sep 2017, 19:50 Re: Mail senden mit Synapse - Zeichencodierungsproblem

Wenn du die ausführlichere Methode nutzt, kannst du den Mailtext entsprechend kodieren:
Code: Alles auswählen
    Mime.AddPartTextEx(PartText, Mime.MessagePart, UTF_8, True, ME_8BIT);

Siehe: http://www.lazarusforum.de/viewtopic.php?f=26&t=9431
Ein komplettes Beispiel hatte ich versehentlich mal in einem falschen Thread gepostet: https://www.lazarusforum.de/viewtopic.php?p=94436#p94436
Code: Alles auswählen
type
  TLiveSelection = (lsMoney, lsChilds, lsTime);
  TLive = Array[0..1] of TLiveSelection; 
Michl
 
Beiträge: 2260
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 AlterMann » 4. Sep 2017, 10:58 Re: Mail senden mit Synapse - Zeichencodierungsproblem

Vielen Dank, das hat prächtig geholfen.

Falls jemand mit einem ähnlichen Problem auf diesen Thread stößt, so sieht die Senderoutine jetzt aus:

Code: Alles auswählen
 
procedure TForm303.Button3Click(Sender: TObject);//Senden
 
 var result : boolean;
     MIMEText    : TStrings;
     MIMEPart    : TMimePart;
     MIMEMessage : TMimeMess;
 
  begin
     MIMEText := TStringList.Create;
     MIMEText.Add(Memo1.Lines.Text);
 
     MIMEMessage := TMimeMess.Create;
 
     with MIMEMessage do
     try
       Header.CharsetCode := UTF_8;
       Header.Date := Now;
       Header.From := absender;
       Header.ToList.Clear;
       Header.ToList.Add(Edit1.Text);
       Header.CcList.Clear;
       Header.Subject := Edit2.Text;
 
       MIMEPart := AddPartMultipart('mixed', nil);
 
       AddPartTextEx(MIMEText, MimePart, UTF_8, True, ME_8BIT);
 
       EncodeMessage;
 
       result := SendToRaw(Header.From,Header.ToList.CommaText,server,Lines,benutzer,passwort);
     finally
       Free;
       MIMEText.Free;
     end;
 if result then
  begin
   Panel1.Visible:=true;
   Timer1.Enabled:=true;
  end;
end;
 


Grüße
Christian
Früher war alles besser. Und aus Holz!
AlterMann
 
Beiträge: 201
Registriert: 13. Dez 2009, 09:43
Wohnort: Niederösterreich
OS, Lazarus, FPC: Win7prof 64bit - Lazarus 1.6 r51630 FPC 3.0.0 i386-win32-win32/win64 | 
CPU-Target: x86 64Bit
Nach oben

• Themenende •

Zurück zu Netzwerk



Wer ist online?

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

cron
porpoises-institution
accuracy-worried