【问题标题】:Reply to a multipart email message回复多部分电子邮件
【发布时间】:2017-03-19 06:26:06
【问题描述】:

我想在电子邮件的开头添加文本并将其发回。

如果字母是 MIME “text/plain”,它可以工作。 如果 MIME "multipart/*" 不能正常工作。发件人收到带有附件的响应,而不是原始正文。

如何在“multipart/*”邮件中添加文字并发送给发件人?

void replyMessage(String from, int MessageNumber, String MessageText) throws Exception {

    if (messages[MessageNumber].isMimeType("text/plain")) {

        // it work!
        Message msgReply = messages[MessageNumber].reply(false);
        String originalText = messages[MessageNumber].getContent().toString().replaceAll("(?m)^", "> ");

        msgReply.setFrom(new InternetAddress(from));
        msgReply.setText(MessageText + "\n\n---------------\n\n" + originalText);

        Transport.send(msgReply, user, pass);


    } else if (messages[MessageNumber].isMimeType("multipart/*")) {

        // not work!
        MimeMessage msgReply = (MimeMessage) messages[MessageNumber].reply(false);
        msgReply.setFrom(new InternetAddress(from));

        // Create your new message part
        BodyPart messageBodyPart1 = new MimeBodyPart();
        messageBodyPart1.setText("Oiginal message:\n\n");

        // Create and fill part for the forwarded content
        BodyPart messageBodyPart2 = new MimeBodyPart();
        messageBodyPart2.setDataHandler(messages[MessageNumber].getDataHandler());

        // Create a multi-part to combine the parts
        Multipart multipart = new MimeMultipart();

        // Add parts to multi part
        multipart.addBodyPart(messageBodyPart1);
        multipart.addBodyPart(messageBodyPart2);

        // add the Multipart to the message
        msgReply.setContent(multipart);

        Transport.send(msgReply, user, pass);
    }
}

【问题讨论】:

    标签: java jakarta-mail


    【解决方案1】:

    您需要将原始文本和回复文本组合成一个字符串和一个正文部分,就像您在 text/plain case 中所做的那样。但随后您需要决定如何处理原始消息中的其他部分。如果它们是附件,您要丢弃它们吗?如果原始消息是多部分/替代的,是否要同时更新回复中的 text/html 和 text/plain 部分?如果原件是多部分/相关的,您是否要保留图像并更新回复中的文本/html?您需要考虑更多的情况,这甚至会忽略签名或加密的消息。

    【讨论】:

    • 感谢您的回复。这是我第一次使用邮件的经验。在那之前,我认为回复电子邮件是一项微不足道的任务)。结果,我想得到原信,但我的文字在第一行。附件忽略。在 JavaMail 附带的示例中,我没有发现任何类似的东西。 Сould you show an example of code that do this?
    猜你喜欢
    • 1970-01-01
    • 2013-07-13
    • 2019-05-06
    • 2016-10-05
    • 2011-04-15
    • 2021-01-11
    • 2012-08-13
    • 2018-05-16
    • 1970-01-01
    相关资源
    最近更新 更多