Email mit kyrillischen Zeichen in der Betreffzeile

  • Themenstarter Themenstarter Iceman79
  • Beginndatum Beginndatum
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]
 
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
 
Dann werden dummerweise Fragezeichen anstelle der einzelnen kyrillischen Zeichen dargestellt.
 
Und

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

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

Christian
 
Hier nochmal ein Beispiel dazu:
Der Betreffstring im Quellcode -> "bla \u043c bla"
Und das steht dann als Betreffzeile in der Mail -> "bla ? bla"
 
Die Methode void setSubject(java.lang.String subject, java.lang.String charset) existiert bei mir nicht! Welche Version der mail.jar hast du denn?
 
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.

Zurück
Oben