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 quasimultipart/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.