Email mit kyrillischen Zeichen in der Betreffzeile

Status
Nicht offen für weitere Antworten.
I

Iceman79

Gast
Hallo!

Ich würde gern eine Email mit kyrillischen Zeichen in der Betreffzeile versenden. Allerdings finde ich keine Möglichkeit dies zu realisieren. Kann mir jemand helfen?


Hier mein Quellcode, der mit Hilfe der Javax.Mail API Mail mit ASCII-Zeichen als Betreff verschickt:

Code:
public static boolean sendMail(String[] empf, String betreff,
            String nachricht, String filename, ByteArrayOutputStream stream,
            ResourceBundle bundle_mail) {

        if (log.isEnabledFor(org.apache.log4j.Level.DEBUG)) {
            log.debug("EMail_sendMail-->start");
        }
        try {
            // Postausgangsserver einstellen
            Properties props = new Properties();
            props.put("mail.smtp.host", bundle_mail.getString("smtp_Host"));

            // EMail Session zum Postausgangsserver aufbauen
            Session session = Session.getDefaultInstance(props);
            session.setDebug(Boolean.parseBoolean(bundle_mail
                    .getString("debug")));

            // E-Mail mit Body und Anhang erstellen
            Message msg = new MimeMessage(session);
            MimeMultipart content = new MimeMultipart("report");//Caterpillar

            // Mailinhalt einfügen
            MimeBodyPart html = new MimeBodyPart();
            html.setContent(nachricht, "text/HTML");
            content.addBodyPart(html);

            // Mailanhang einfügen
            if (filename != null || stream != null) {
                DataSource dataSource = new ByteArrayDataSource(stream
                        .toByteArray(), bundle_mail.getString("type")); /*
                                                                         * Der
                                                                         * MIME-Type
                                                                         * bestimmt
                                                                         * die
                                                                         * Formatierung
                                                                         * der
                                                                         * Datei
                                                                         * im
                                                                         * Anhang
                                                                         */
                MimeBodyPart messageBodyPart = new MimeBodyPart();
                messageBodyPart.setDataHandler(new DataHandler(dataSource));
                messageBodyPart.setFileName(filename + ".pdf"); /*
                                                                 * gibt dem
                                                                 * Anhang einen
                                                                 * Namen
                                                                 */
                content.addBodyPart(messageBodyPart);
            }

            // From - Adresse einfügen
            InternetAddress addressFrom = new InternetAddress(bundle_mail
                    .getString("sender"));
            msg.setFrom(addressFrom);

            // To - Adresse einfügen
            for (int i = 0; i < empf.length; i++) {
                InternetAddress addressTo = new InternetAddress(empf[i]);
                msg.addRecipient(Message.RecipientType.TO, addressTo);
                if (log.isEnabledFor(org.apache.log4j.Level.DEBUG)) {
                    log.debug("EMail_sendMail-->Empfänger: " + empf[i]);
                }
            }

            // Betreff einfügen
            msg.setSubject(betreff);

            // Inhalt einfügen
            msg.setContent(content);

            // Headerinformationen einfügen
            msg.addHeader("MIME-Version", "1.0");
            msg.addHeader("Content-Type", content.getContentType()); 
            
            // Sendedatum einfügen
            msg.setSentDate(new java.util.Date());

            // Mail senden
            Transport.send(msg);

            if (log.isEnabledFor(org.apache.log4j.Level.DEBUG)) {
                log
                        .debug("EMail_sendMail-->EMail wurde erfolgreich gesendet!!");
            }
            return true;

        } catch (AddressException e) {
            log.error("Manager -> sendMail -> AddressException: "
                    + e.getMessage());
            return false;
        } catch (MessagingException e) {
            log.error("Manager -> sendMail -> MessagingException: "
                    + e.getMessage());
            return false;
        }
    }
[/code]
 

Ullenboom

Bekanntes Mitglied
Was passiert denn, wenn du in deine Variable betreff etwas kyrillisches übergibst? Mir war nicht bewusst, dass man bei setSubject() kein beliebiges Unicode einsetzen kann.

Christian
 
I

Iceman79

Gast
Dann werden dummerweise Fragezeichen anstelle der einzelnen kyrillischen Zeichen dargestellt.
 

Ullenboom

Bekanntes Mitglied
Und

void setSubject(java.lang.String subject, java.lang.String charset)

mit charset="KOI8-R" hast du auch schon probiert?

Christian
 
I

Iceman79

Gast
Hier nochmal ein Beispiel dazu:
Der Betreffstring im Quellcode -> "bla \u043c bla"
Und das steht dann als Betreffzeile in der Mail -> "bla ? bla"
 
G

Gast

Gast
Die Methode void setSubject(java.lang.String subject, java.lang.String charset) existiert bei mir nicht! Welche Version der mail.jar hast du denn?
 

Ullenboom

Bekanntes Mitglied
Die gleiche wie du :)

Message msg = new MimeMessage(session);

->

MimeMessage msg = new MimeMessage(session);

http://www.docjar.com/docs/api/javax/mail/internet/MimeMessage.html#setSubject(java.lang.String,%20java.lang.String)

Christian
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben