Umlaute: E-Mail per JavaMail und Textfile

Status
Nicht offen für weitere Antworten.

freez

Top Contributor
Hallo,

ich versuche ein Textfile einzulesen und dieses mit JavaMail zu verschicken. Nun habe ich ein Problem mit den Umlauten ... die kommen nicht so an, wie sie sollen, und manchmal fehlen auch die Zeilenumbrüche.

Die Textdatei habe ich einmal im UTF-8 und einmal im ANSI Format abgespeichert. Und egal, wie ich sie einlese (als Byte mit dem ByteToUTF8Converter, als InputStreamReader, ich habe nie ein befriedigendes Ergebniss.

Hier mal mein Code, der das File einliesst:


Code:
private String readTextFile(String Filename) {
		try {
			File file = new File(Filename);
			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"));
			String line;
			StringBuffer buf = new StringBuffer();
			
			while((line = reader.readLine()) != null)
				buf.append(line);
			
			reader.close();
			return buf.toString();
}

Dies ist einer von meinen Tests. Ich habe es auch, wie gesagt in ein Byte Array eingelesen und versucht in UTF-8 zu konvertieren.

Was kann ich noch tun?
 

freez

Top Contributor
Ich habe nun den String auch mal in der Konsole ausgegeben. Dort passen die Umlaute. Was läuft verkehrt?
 

HoaX

Top Contributor
so wie du einliest erzwingst du utf-8. mehr kann man nicht zu deinem code sagen.

willst du die datei als anhang versenden? dann musst du nicht die datei einlesen sondern einfach nur FileDataSource verwenden...
 

freez

Top Contributor
Nein, in der Textdatei ist der Text, der in der EMail drin stehen soll.

Hier auch noch der Code zum Senden der Mail:
Code:
public boolean sendMail(String recipientsAddress,String subject,String text, String senderAddress ){
		boolean email_sended = false;
        MailAuthenticator auth = new MailAuthenticator(username, password);
        Properties properties = new Properties();
        // Den Properties wird die ServerAdresse hinzugefügt
        properties.put("mail.smtp.host", smtpHost);

        // !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
        // verlangt
        // muss an dieser Stelle die Property auf "true" gesetzt
        // werden
        properties.put("mail.smtp.auth", "true");

        // Hier wird mit den Properties und dem implements Contructor
        // erzeugten
        // MailAuthenticator eine Session erzeugt
        Session session = Session.getInstance(properties, auth);

        try {

            // Eine neue Message erzeugen
            Message msg = new MimeMessage(session);

            // Hier werden die Absender- und Empfängeradressen gesetzt
            msg.setFrom(new InternetAddress(senderAddress));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientsAddress, false));

            // Der Betreff und Body der Message werden gesetzt
            msg.setSubject(subject);
            msg.setText(text);

            // Hier lassen sich HEADER-Informationen hinzufügen
            msg.setHeader("Test", "Test");
            msg.setSentDate(new Date( ));

            // Zum Schluss wird die Mail natürlich noch verschickt
            Transport.send(msg);
            email_sended = true;
        }
        catch (Exception e) {
            email_sended = false;
            //TODO DEBUG Ausgabe
            e.printStackTrace();
        }
        return email_sended;
	}
 

freez

Top Contributor
Ich habe scheinbar eine Lösung gefunden. Ich habe an beiden Seiten gedreht. Einmal beim einlesen und einmal beim E-Mail verschicken.

Hier mal die Methode zum verschicken der Mail mit den Einstellungen encoding = "8bit", charset = "iso-8859-1", contentType = "text/plain", subjectEncoding = "Q":
Code:
String encoding = "8bit";
    String charset = "iso-8859-1";
    String contentType = "text/plain";
    String subjectEncoding = "Q";

	
	public boolean sendMail(String recipientsAddress,String subject,String text, String senderAddress ){
		boolean email_sended = false;
        MailAuthenticator auth = new MailAuthenticator(username, password);
        Properties properties = new Properties();
        // Den Properties wird die ServerAdresse hinzugefügt
        properties.put("mail.smtp.host", smtpHost);

        // !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
        // verlangt
        // muss an dieser Stelle die Property auf "true" gesetzt
        // werden
        properties.put("mail.smtp.auth", "true");

        // Hier wird mit den Properties und dem implements Contructor
        // erzeugten
        // MailAuthenticator eine Session erzeugt
        Session session = Session.getInstance(properties, auth);

        try {

            // Eine neue Message erzeugen
            Message msg = new MimeMessage(session);

            // Hier werden die Absender- und Empfängeradressen gesetzt
            msg.setFrom(new InternetAddress(senderAddress));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(recipientsAddress, false));

            // Der Betreff und Body der Message werden gesetzt
//            msg.setSubject(subject);
//            msg.setText(text);

            msg.setSubject(MimeUtility.encodeText(subject, this.charset, subjectEncoding));

            msg.setText(text);

            // set Type and Charset in Headerfield 'Content-Type'
            msg.setHeader("Content-Type", this.contentType + "; charset=" + this.charset);

            // set Transfer-Encoding for printing umlauts
            msg.setHeader("Content-Transfer-Encoding", this.encoding);
            msg.setSentDate(new Date(System.currentTimeMillis()));
            msg.saveChanges();

            // Zum Schluss wird die Mail natürlich noch verschickt
            Transport.send(msg);
            email_sended = true;
        }
        catch (Exception e) {
            email_sended = false;
            //TODO DEBUG Ausgabe
            e.printStackTrace();
        }
        return email_sended;
	}

und zum einlesen des Files habe ich byteweise eingelesen und diese in UTF konvertiert:
Code:
private String readTextFile(String Filename) {
		try {
			
//			Vorabdeklaration
			File file = new File(Filename);
			FileInputStream fis = new FileInputStream(file);
			DataInputStream dis = new DataInputStream(fis);
			ByteToCharUTF8 converter = new ByteToCharUTF8();
			
			
//			Buffer und einlesen
			byte[] data = new byte[(int)file.length()];
			dis.read(data);
			dis.close();
			fis.close();
			
//			Konvertieren
			String result = new String(converter.convertAll(data));
			converter.reset();			

			return result;
 

freez

Top Contributor
Achso, die Textdatei muss in UTF-8 ohne BOM vorliegen. Dann hat man alle Umlaute, Zeilenumbrüche und die "?" am Anfang des Files verschwinden.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
N iText keine Sonderzeichen und Umlaute unter Windows Allgemeine Java-Themen 13
O Leerzeichen und Umlaute im Pfad einer Java Applikation machen Probleme Allgemeine Java-Themen 13
L Tess4j Umlaute anzeigen Allgemeine Java-Themen 3
T Umlaute in Eclipse einlesen funktioniert nicht Allgemeine Java-Themen 16
T Input/Output Konsole gibt trotz printf keine Umlaute aus Allgemeine Java-Themen 17
T Umlaute werden falsch gedruckt Allgemeine Java-Themen 2
F CaesarVerschlüsselung Umlaute Allgemeine Java-Themen 7
F Windows Umlaute Allgemeine Java-Themen 15
MiMa Umlaute beim Einlesen von Dateinamen Allgemeine Java-Themen 12
C Regex (Case insensitive und Umlaute) Allgemeine Java-Themen 4
B Zip umlaute Allgemeine Java-Themen 8
S jar-Datei stellt Umlaute nicht dar Allgemeine Java-Themen 6
K Javamail:Probleme mit der Darstellung von Umlaute in Subject Allgemeine Java-Themen 15
S Umlaute machen probleme Allgemeine Java-Themen 3
E HTML File mit Umlaute einlesen Allgemeine Java-Themen 8
R Base64_decode Umlaute Problem. Allgemeine Java-Themen 8
J Umlaute bei Commons-Fileupload Allgemeine Java-Themen 3
T Wie konvertiere ich Umlaute (ä -> ae) ? Allgemeine Java-Themen 7
J Umlaute in regulären Ausdrücken Allgemeine Java-Themen 3
kodela replace und die Umlaute Allgemeine Java-Themen 10
D zeichenerkennung für umlaute bei eingabe Allgemeine Java-Themen 4
S Mac OS JRE verhunst Umlaute Allgemeine Java-Themen 6
G Datei einlesen: Umlaute sind Fragezeichen Allgemeine Java-Themen 23
cover1012 Umlaute in id3 Tags Allgemeine Java-Themen 2
J JAR und Umlaute Allgemeine Java-Themen 4
B Umlaute über Konsoloe ein- und ausgeben Allgemeine Java-Themen 5
G Windows Shell Umlaute Problem Allgemeine Java-Themen 19
W Umlaute umwandeln bekomme nur Leerzeichen raus. Allgemeine Java-Themen 11
E Umlaute: FileWriter vs. FileOutputStream Allgemeine Java-Themen 3
W Umlaute in Dateien und Verzeichnissen. Bekomme Fehler Allgemeine Java-Themen 5
M Umlaute richtig dastellen? Allgemeine Java-Themen 4
X Umlaute im JAR-File Allgemeine Java-Themen 4
B Umlaute-Problem bei Plattform-Wechsel Allgemeine Java-Themen 9
C Umlaute mysql Allgemeine Java-Themen 3
F Umlaute in Text . Allgemeine Java-Themen 7
V Umlaute, sonderzeichen beim HTMLEditiorKit Allgemeine Java-Themen 2
O Probleme mit Umlaute Allgemeine Java-Themen 12
B html umlaute decoden Allgemeine Java-Themen 4
Z E-Mail senden Allgemeine Java-Themen 2
C Probleme mit javax.mail.Session Allgemeine Java-Themen 8
jumichel Eclipse The package javax.mail is not accessible Allgemeine Java-Themen 3
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
TechnikTVcode Mail Programm Allgemeine Java-Themen 2
N E-Mail per Java verschicken Allgemeine Java-Themen 2
C javax.mail.Message message.setreplyto() null setzen (keine replyto Adresse) Allgemeine Java-Themen 25
B Java Mail: Prüfung auf neue Emails Allgemeine Java-Themen 1
B Java Mail: Emails sortieren? Allgemeine Java-Themen 5
B Java Mail: Prüfen, ob Email hat ein Anhang oder nicht Allgemeine Java-Themen 2
B Mail: Nicht vorhandener Empfänger ermitteln Allgemeine Java-Themen 4
B Java Mail: Unterscheidung bei Attachments und eingefügte Bilder in Email Allgemeine Java-Themen 18
T java mail 1.4.2| ssl Allgemeine Java-Themen 2
E javax.mail sene Type ändern Allgemeine Java-Themen 2
R Compiler-Fehler Bild per E-Mail versenden Allgemeine Java-Themen 3
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
D JPanel in Mail darstellen Allgemeine Java-Themen 30
D Mail aus GUI generieren Allgemeine Java-Themen 2
U javax.mail.Folder.list() zeigt nicht alle Ordner Allgemeine Java-Themen 5
KeVoZ_ Java Mail senden - geht nicht Allgemeine Java-Themen 4
K Input/Output E-mail Zusammenfassen Senden Allgemeine Java-Themen 2
F Java Mail Problem: Authentifizierung wird nicht immer mitgeschickt Allgemeine Java-Themen 1
M Java Mail verwenden Allgemeine Java-Themen 20
X Mail versenden mit java.mail Allgemeine Java-Themen 14
L Java Mail Allgemeine Java-Themen 0
H Java Mail Fehlermeldung: java.lang.NoClassDefFoundError: javax/mail/internet/AddressException Allgemeine Java-Themen 5
B Java Mail Client als Outlook ausgeben Allgemeine Java-Themen 2
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
T popup für e-mail Allgemeine Java-Themen 2
Z Java E-Mail Client mit End-to-End-Verschlüsselung Allgemeine Java-Themen 4
P javax.mail MessageCount Allgemeine Java-Themen 13
I Eigenes Mail-Programm schreiben Allgemeine Java-Themen 21
C E-Mail: Authenticator.getPasswordAuthentication() wird nicht gerufen Allgemeine Java-Themen 2
GUI-Programmer Java Mail - Proxy für Verbindung einstellen Allgemeine Java-Themen 2
P Mail wird nicht gesendet - Muss ich kein PW angeben ? Allgemeine Java-Themen 13
U Mailclient über getDesktop.mail vorbereiten, Problem beim Anhang: Allgemeine Java-Themen 3
S Mail Adressen Syntax prüfen Allgemeine Java-Themen 22
S Java Mail Allgemeine Java-Themen 3
G Problem Java Mail API: CC wird nicht berücksichtigt Allgemeine Java-Themen 7
R php hat mail() und java? Allgemeine Java-Themen 5
B Per BatchScript Mail versenden Allgemeine Java-Themen 27
S mail per smtp lokal in postfix einliefern Allgemeine Java-Themen 6
Mike90 Graph in einer Mail verschicken Allgemeine Java-Themen 7
N Java Mail Allgemeine Java-Themen 5
F Spam-Mail-Programm gesucht Allgemeine Java-Themen 11
N Java Mail Allgemeine Java-Themen 7
M [Java Mail] Multipart beim Senden funktioniert nicht. Allgemeine Java-Themen 11
S Shell-Befehl: mail Allgemeine Java-Themen 6
W mail senden mit java Allgemeine Java-Themen 4
C Desktop.mail Problem. IO Exception: Failed to open. Allgemeine Java-Themen 3
P Mail Notifier Allgemeine Java-Themen 9
J String auf E-Mail überprüfen Allgemeine Java-Themen 4
S E-Mail an nicht-RFC822-formatierte Adresse Allgemeine Java-Themen 4
M Desktop mail attachments Allgemeine Java-Themen 3
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
C Mail Api http Protokoll? Allgemeine Java-Themen 5
C E-Mail Versand Allgemeine Java-Themen 3
0x7F800000 e-mail mit einer virtuellen datei schicken? Allgemeine Java-Themen 3
J Mail schicken über mailx Allgemeine Java-Themen 3
G E-Mail versenden Allgemeine Java-Themen 6
L Infos zu java.mail Allgemeine Java-Themen 5
H Java Mail hängt sich unregelmässig auf Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben