使用javamail发送邮件的时候如何阻止附件内容输出到控制台
伊谢尔伦
伊谢尔伦 2017-04-18 09:53:06
[Java讨论组]

我在使用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;
    }
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(4)
PHP中文网

session.setDebug(true);这句去掉

高洛峰

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

ringa_lee

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

天蓬老师

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号