Indy - Mailtext verschluckt Umlaute?



  • Hallo,
    ich verwende in meinem Projekt die Indy-Komponenten TIdMessage & TIdSMTP (Version 10.5.5) um eine Mail zu versenden. Den Text der Mail lese ich aus einer Textdatei aus und füge diesen in den Body ein:

    //Für den Mailtext ist eine TStringlist o.a. (Memofeld, Richtextfeld, Listbox) erforderlich:
    	TStringList *body=new TStringList();
    
    	body->LoadFromFile(ExtractFilePath(ParamStr(0))+ "\\Mailtext.txt");
    	DM1->IdMessage2->Body->Add("Ereigniskurzbeschreibung:\n" + MEr_kurz->Text +"\n\n\n");
    	DM1->IdMessage2->Body->AddStrings(body);
    

    Der Text beinhaltet nun auch Umlaute. Wenn der Empfänger diese Mail dann liest, stellt man fest, dass diese Umlaute einfach aus dem Text entfernt wurden! Wie kann ich das beheben???

    Gruß
    Torsten



  • Welche C++Builder-Version benutzt du? Für richtigen Unicode-Support (ohne Eingreifen von Hand) müßtest du C++Builder 2009 oder höher verwenden.

    Ansonsten sieh mal in der Indy-Dokumentation (oder in der zugehörigen .pas-Datei) nach, ob die Methoden, die du da aufrufst, evtl. einen UTF8String erwarten. In C++Builder vor v2009 mußt du die Konvertierung nach UTF8String ggf. manuell durchführen, ab 2009 aufwärts geschieht das nach Bedarf automatisch.



  • audacia schrieb:

    Welche C++Builder-Version benutzt du? ...

    Ich verwende den C++Builder 2010.



  • versuch mal folgendes:

    TStringList *body=new TStringList();
    body->LoadFromFile(ExtractFilePath(ParamStr(0))+ "\\Mailtext.txt");
    body->Insert(0,"Ereigniskurzbeschreibung:\n" + MEr_kurz->Text +"\n\n\n");
    
    std::auto_ptr<TIdMessageBuilderHtml> MessageBody(new TIdMessageBuilderHtml()); 
    MessageBody->PlainText->Assign(body);
    MessageBody->FillMessage(DM1->IdMessage2);
    
    IdSMTP1->Send(DM1->IdMessage2); //Versenden
    

    ich verwende Indy 10.5.7 und da kommen dann alle Umlaute normal



  • Hallo Linnea,

    ich habe Deinen Code in meinem Projekt mal eingefügt und das Projekt gestartet. Ich bekomme hier folgende Fehler:

    Abhängigkeiten des Projekts werden überprüft...
    Compilieren von Massnahmenverfolgung.cbproj (Debug-Konfiguration)
    [BCC32 Fehler] UnEingabe.cpp(42): E2451 Undefiniertes Symbol 'TIdMessageBuilderHtml'
    Vollständiger Parser-Kontext
    UnEingabe.cpp(28): Analyse: void _fastcall TFEingabe::mail_senden()
    [BCC32 Fehler] UnEingabe.cpp(42): E2299 Vorlagenspezialisierung kann aus 'std::auto_ptr<_Ty>' nicht generiert werden
    Vollständiger Parser-Kontext
    UnEingabe.cpp(28): Analyse: void _fastcall TFEingabe::mail_senden()
    [BCC32 Fehler] UnEingabe.cpp(42): E2379 In Anweisung fehlt ;
    Vollständiger Parser-Kontext
    UnEingabe.cpp(28): Analyse: void _fastcall TFEingabe::mail_senden()
    [BCC32 Fehler] UnEingabe.cpp(43): E2451 Undefiniertes Symbol 'MessageBody'
    Vollständiger Parser-Kontext
    UnEingabe.cpp(28): Analyse: void _fastcall TFEingabe::mail_senden()
    Misslungen
    Verstrichene Zeit: 00:00:39.9

    Ich vermute mal, dass es an der Indy-Version liegt. Ich kann in meinen Indy-Komponenten leider keine "TIdMessageBuilderHtml" finden. Oder liegt das Problem doch an anderer Stelle???

    Gruß Torsten



  • So, ich habe jetzt mal ein wenig getestet. Ich habe ein kleines Tool geschrieben, mit dem ich eine Mail verschicken kann. Verwendet habe ich die selben Komponenten wie in meinem anderen Projekt (TIdSMTP & TIdMessage). Mit den gleichen Einstellungen!!! Hier mal der Code:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    
    IdMessage1->From->Text = "xyz@gmx.com";
    IdMessage1->Recipients->EMailAddresses = "xyz@gmx.com";
    IdMessage1->Subject = "Testmail";
    
    	TStringList *body=new TStringList();
    	body->LoadFromFile("C:\\Mailtext.txt");
    	IdMessage1->Body->Add("Ereigniskurzbeschreibung:\n" + Memo1->Text +"\n\n\n");
    	IdMessage1->Body->AddStrings(body);
    
    IdSMTP1->Connect("*hier steht der Server*");
    IdSMTP1->Send(IdMessage1);
    IdSMTP1->Disconnect();
    
    }
    

    Jetzt kommts. Dieses Tool schickt den gleichen Text wie in meinem Projekt allerdings MIT ALLEN UMLAUTEN 😮

    Wie kann das sein?

    Gruß Torsten


Log in to reply