# Email mit kyrillischen Zeichen in der Betreffzeile



## Iceman79 (31. Jul 2007)

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:


```
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 (31. Jul 2007)

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


----------



## Iceman79 (31. Jul 2007)

Dann werden dummerweise Fragezeichen anstelle der einzelnen kyrillischen Zeichen dargestellt.


----------



## Ullenboom (31. Jul 2007)

Und 

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

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

 Christian


----------



## Iceman79 (31. Jul 2007)

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


----------



## Gast (31. Jul 2007)

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 (31. Jul 2007)

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


----------



## Iceman79 (31. Jul 2007)

Hey super!! Funzt ;o)

Besten Dank!!


----------

