使用javamail发送邮件的时候如何阻止附件内容输出到控制台

发布于 2022-09-03 13:36:02 字数 2446 浏览 18 评论 0

我在使用JavaMail发送带附件的邮件时候,每次到了Transport.sendMessage()这一步,控制台就会输出附件内容,请问如何设置可以取消输出呢?

public void sendFileAttachedMail(String fromMail, String toMail, String fromMailPwd, String bookId) {
        Properties prop = new Properties();
        prop.setProperty(MAIL_HOST, MAIL_HOST_VALUE);
        prop.setProperty(MAIL_TRANSPORT_PROTOCOL, MAIL_TRANSPORT_PROTOCOL_VALUE);
        prop.setProperty(MAIL_SMTP_AUTH, MAIL_SMTP_AUTH_VALUE);
        Session session = Session.getInstance(prop);
        session.setDebug(true);
        try {
            Transport ts = session.getTransport();
            String fromMailPrefix = fromMail.split("@")[0];
            ts.connect(MAIL_HOST_VALUE,fromMailPrefix, fromMailPwd);
            String subject = "FILE ATTACHED MAIL TEST";
            String content = "Mail Content RE";
            String fileSavePath = "E://attachMail.eml";
            Message message = createFileAttachedMail(session, fromMail, toMail, subject, content, bookId, fileSavePath);
            ts.sendMessage(message, message.getAllRecipients());
            ts.close();
        } catch (Exception e) {
            if(logger.isErrorEnabled()){
                logger.error("send fileAttachedMail failed!",e);
            }
        }
    }
    
    
     public MimeMessage createFileAttachedMail(Session session, String fromAdd, String toAdd, String subject, String content, String fileObjectId, String fileSavePath) throws Exception {
        MimeMessage message = new MimeMessage(session);
        message.setFrom(new InternetAddress(fromAdd));
        message.setRecipient(Message.RecipientType.TO, new InternetAddress(toAdd));
        message.setSubject(subject);
        // 邮件正文
        MimeBodyPart text  = new MimeBodyPart();
        text.setContent(content, MAIL_CONTENT_FORMAT_CHARSET);

        // 附件
        MimeBodyPart attach = new MimeBodyPart();
        DataHandler handler = new DataHandler(new FileDataSource(this.gridFSService.readFiles(fileObjectId)));
        attach.setDataHandler(handler);
        attach.setFileName(handler.getName());

        // 创建容器描述数据关系
        MimeMultipart mp = new MimeMultipart();
        mp.addBodyPart(text);
        mp.addBodyPart(attach);
        mp.setSubType("mixed");

        message.setContent(mp);
        message.saveChanges();
        //将创建的email写入到本地存储
        //message.writeTo(new FileOutputStream(fileSavePath));
        return message;
    }

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

橘虞初梦 2022-09-10 13:36:02

session.setDebug(true);这句去掉

墨离汐 2022-09-10 13:36:02

你把logger的级别调高就不会打印了,肯定是其内部实现的时候打印的。

烟沫凡尘 2022-09-10 13:36:02

打印到控制台,相当于另外开了一个线程,会影响到业务逻辑的性能的。

彩虹直至黑白 2022-09-10 13:36:02

大哥,输出不输出,是由自己了啊。它输出了,肯定代码里有输出的语句。你把它注掉不就OK

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文