Hallo zusammen,
ich habe für einen Freund ein Programm zusammengestöpselt aus verschiedenen Funden im Internet und meinem Kopf.
Der Kern des Programms versendet eine Email mittels SMTP. Das klappt auch soweit.
Ein Problem existiert jedoch, er hat unter Windows XP vor dem Betreff und dem Inhalt jeweils ein Fragezeichen stehen. Umlaute gehen jedoch.
Bei mir unter Linux klappt beides korrekt.
Auf meinem Handy sehe ich die Mail-Betreffzeile wiederrum komisch, wenn mein Kumpel sie über sein System an mich verschickt:
=?CP1252?Q?=3F......
Es werden also die Umlaute anders dargestellt. Die gleiche Email ist jedoch im Thunderbird und in Evolution korrekt, bis auf das Fragezeichen.
Die eigentliche Frage ist, ob ich irgendetwas besser machen kann, übersehen habe etc. im Bereich des Versendens und der richtigen Kodierung.
Schonmal vielen Dank.
Hier der Abschnitt der die Mail versendet:
Hiermit lese ich gespeicherte Textdateien ein.
Gibt es da eine gute Möglichkeit um so ein System Windows + Linux kompatibel zu gestalten?
Schönen Gruß, Tim
ich habe für einen Freund ein Programm zusammengestöpselt aus verschiedenen Funden im Internet und meinem Kopf.
Der Kern des Programms versendet eine Email mittels SMTP. Das klappt auch soweit.
Ein Problem existiert jedoch, er hat unter Windows XP vor dem Betreff und dem Inhalt jeweils ein Fragezeichen stehen. Umlaute gehen jedoch.
Bei mir unter Linux klappt beides korrekt.
Auf meinem Handy sehe ich die Mail-Betreffzeile wiederrum komisch, wenn mein Kumpel sie über sein System an mich verschickt:
=?CP1252?Q?=3F......
Es werden also die Umlaute anders dargestellt. Die gleiche Email ist jedoch im Thunderbird und in Evolution korrekt, bis auf das Fragezeichen.
Die eigentliche Frage ist, ob ich irgendetwas besser machen kann, übersehen habe etc. im Bereich des Versendens und der richtigen Kodierung.
Schonmal vielen Dank.
Hier der Abschnitt der die Mail versendet:
Java:
public boolean sendMail(String recipientsAddress, String password) {
String username = getProperty("username");
String host = getProperty("mail.smtp.host");
String port = getProperty("mail.smtp.port");
String senderAddress = getProperty("senderAddress");
String text = getTextFile(getProperty("newsTextPath"));
String subject = getTextFile(getProperty("subjectPath"));
String attachmentPath = getProperty("attachmentPath");
File file2send = new File(attachmentPath);
Session session = prepareTechnicalPart(password, username, host, port);
return technicalPart(recipientsAddress, senderAddress, text, subject, session, file2send);
}
private Session prepareTechnicalPart(String password, String username,
String host, String port) {
MailAuthenticator auth = new MailAuthenticator(username, password);
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.setProperty("mail.smtp.port", port);
properties.put("mail.smtp.auth", getProperty("mail.smtp.auth"));
Session session = Session.getDefaultInstance(properties, auth);
return session;
}
private boolean technicalPart(String recipientsAddress, String senderAddress,
String text, String subject, Session session, File file2send) {
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(senderAddress));
msg.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(recipientsAddress, false));
MimeBodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setText(text);
textBodyPart.setDisposition(MimeBodyPart.INLINE);
msg.setSubject(subject);
msg.setText(text);
MimeBodyPart attachement = new MimeBodyPart();
attachement.setDataHandler(new DataHandler(new FileDataSource(
file2send)));
attachement.setFileName(file2send.getName());
attachement.setDisposition(MimeBodyPart.ATTACHMENT);
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(textBodyPart);
mimeMultipart.addBodyPart(attachement);
msg.setContent(mimeMultipart);
msg.setSentDate(new Date());
Transport.send(msg);
} catch (Exception e) {
System.err.println("Malfunction of sending process. System will exit.");
e.printStackTrace();
return false;
}
return true;
}
Hiermit lese ich gespeicherte Textdateien ein.
Java:
private String getTextFile(String source) {
StringBuffer sb = new StringBuffer();
try {
Reader fr = new InputStreamReader(new FileInputStream(source), "UTF-8");
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
sb.append(System.getProperty("line.separator"));
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
Gibt es da eine gute Möglichkeit um so ein System Windows + Linux kompatibel zu gestalten?
Schönen Gruß, Tim