Mails versenden: Text und HTML anzeigen lassen



  • Hallo,
    ich schreibe gerade einen Mail-Client für Android. Mein Problem bei der Weiterleiten-Funktion ist, dass wenn ich eine HTML-Mail weiterleite, lediglich die HTML-Mail in Thunderbird angezeigt wird und nicht meine eigene Nachricht, die mit Plain-Text kodiert ist.
    Ich habe mal den Mail-Quellcode verglichen, wenn ich eine HTML-Mail mit Thunderbird weiterleite und es gibt kaum Unterschiede:

    Weiterleitung durch meine E-Mail-App, wo nur die HTML-Nachricht angezeigt wird.

    MIME-Version: 1.0
    Content-Type: multipart/alternative; 
    	boundary="----=_Part_3_19981178.1457597568430"
    
    ------=_Part_3_19981178.1457597568430
    Content-Type: text/plain; charset=utf-8
    Content-Transfer-Encoding: 7bit
    
    Das ist meine eigene Nachricht, die in Thunderbird nicht angezeigt wird
    
    Max Müller wrote:
    -------------
    TEXT/HTML; charset=windows-1252
    ------=_Part_3_19981178.1457597568430
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: quoted-printable
    
    <html>
      <head>
       Dies wird angezeigt!
    </head>
    </html>
    

    Weiterleitung mit Thunderbird. Alles wird angezeigt.

    MIME-Version: 1.0
    In-Reply-To: <24917803.4.1457597568430.JavaMail.root@localhost>
    Content-Type: multipart/alternative;
     boundary="------------070708010700080802060801"
    
    This is a multi-part message in MIME format.
    --------------070708010700080802060801
    Content-Type: text/plain; charset=utf-8; format=flowed
    Content-Transfer-Encoding: 8bit
    
    Von Thunderbird weitergeleitet. Dieser Text wird angezeigt.
    
    --------------070708010700080802060801
    Content-Type: text/html; charset=utf-8
    Content-Transfer-Encoding: 8bit
    
    <html>
      <head>
          Dies wird angezeigt!
    </head>
    </html>
    

    Was auffällt ist, dass bei der Thunderbird-Version format=flowed hinzugekommen ist. Ist das wirklich ausschlaggebend? Leider habe ich es nicht geschafft dies einzubauen.

    Meine Java-Code ist folgender:

    private void sendMailSMTP() {
            MimeMessage message = null;
            final Multipart multiPart = new MimeMultipart("alternative");
    
            try {
                //Obtain the default mail session
                final Session session = ProtocolUtilities.getDefaultSessions();
                session.setDebug(true);
    
                MimeBodyPart textPart = new MimeBodyPart();
    
                textPart.setText(textContent, "utf-8");
    
                //Construct the mail textContent
                message = new MimeMessage(session);
                message.setText(textContent);
                message.setContent(multiPart);
                message.setSubject(subject);
                message.setFrom(new InternetAddress(emailAddress, userName));
    
                message.addRecipients(MimeMessage.RecipientType.TO, toAddress(TOs));
                message.addRecipients(MimeMessage.RecipientType.BCC, toAddress(BCCs));
                message.addRecipients(MimeMessage.RecipientType.CC, toAddress(CCs));
    
                multiPart.addBodyPart(textPart);
    
                if (fromHtmlContent.length() > 0) {
    
                // HTML-Zitat hinzu
                if (fromHtmlContent.length() > 0) {
                    final MimeBodyPart html = new MimeBodyPart();
                    html.setContent(fromHtmlContent, "text/html; charset=utf-8");
    
                    multipart.addBodyPart(html);
                }
    
                message.setContent(multipart);
    
                message.saveChanges();
    
                //Use Transport to deliver the textContent
                final Transport transport = session.getTransport("smtp");
                transport.connect( outgoingServer, emailAddress, password);
                transport.sendMessage(message, message.getAllRecipients());
                transport.close();
    
            } catch (MessagingException | IOException e) {
                Log.e(TAG, e.toString());
            }
        }
    

    Ursprünglich habe ich gedacht, dass ich für mein Vorhaben multipart/related nehmen muss, aber Thunderbird kriegt das alles mit multipart/alternative hin.

    Weiß jemand weiter?

    Danke im Voraus!



  • format=flowed hat nur mit dem Handling von ">" am Zeilenanfang zu tun.

    Und multipart/alternative ist sicher nicht der richtige Typ. Dein Beispiel ist auch zusammengekürzt (es fehlt z.B. überall das Ende der Nachricht). Bist du sicher dass du beim Zusammenkürzen nix wichtiges übersehen hast?

    Aber, ganz egal was Thunderbird macht solltest nicht den falschen MIME Type verwenden.



  • ps: Dir ist klar dass man multipart Container verschachteln kann?
    Also quasi

    multipart/mixed:
        multipart/alternative:
            text/plain: Meine Nachricht in Plaintext
            text/html: Meine Nachricht in HTML
        multipart/alternative:
            (die angehängte Mail)
    

    Siehe http://stackoverflow.com/questions/3902455/smtp-multipart-alternative-vs-multipart-mixed

    psps: Korrekt wäre wohl die originalte Nachricht als message/rfc822 anzuhängen:
    https://en.wikipedia.org/wiki/MIME#Content-Type



  • Danke, werde ich mal ausprobieren! 🙂

    Die komplette Nachricht würde ich gerne anhängen, aber ich bekomme die Fehlermeldung, dass maximal 10 Smilies erlaubt sind. 🙄



  • Haha, das ist ja doof.
    Ich wollte grad vorschlagen die Smilies einfach für den einen Beitrag zu deaktivieren ("Smilies in diesem Beitrag deaktivieren"). Das hilft bloss dummerweise nicht.


Log in to reply