【问题标题】:How to disable java mail trace on console when sending an email发送电子邮件时如何在控制台上禁用 java 邮件跟踪
【发布时间】:2013-02-04 01:12:09
【问题描述】:

这是我发送电子邮件的代码:

    public void sendMail() 
{
    try
    {
        // Propiedades de la conexión
        Properties props = new Properties();
        props.put("mail.transport.protocol", "smtp");
        props.put("mail.smtp.host", SMTP_HOST_NAME);
        props.put("mail.smtp.port", SMTP_PORT);
        props.put("mail.smtp.auth", "true");

        Authenticator auth = new SMTPAuthenticator();
        Session mailSession = Session.getDefaultInstance(props, auth);

        Transport transport = mailSession.getTransport();

        MimeMessage message = new MimeMessage(mailSession);
        Multipart multipart = new MimeMultipart("alternative");

        BodyPart text = new MimeBodyPart();
        text.setContent(mailMessage,"text/html; charset=UTF-8");

        multipart.addBodyPart(text);

        message.setContent(multipart);

        if(friendlyName != null){
            //String send = friendlyName + " <" + sender + ">";
            message.setFrom(new InternetAddress(sender, friendlyName)); 
        }else{
            message.setFrom(new InternetAddress(sender));
        }

        message.setSubject(subject,"UTF-8");
        message.addRecipient(Message.RecipientType.TO,
                new InternetAddress(receiver));

        transport.connect();
        transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
        transport.close();


    }catch (Exception e) {
        // TODO: handle exception
    }

}

当我发送电子邮件时,我会在控制台(或 catalina.out)上获得此输出:

>>>>>发送数据EHLO xxxxxx

>>>>>发送数据 AUTH LOGIN

>>>>>发送数据xxxxxxxxxxxxxxxxxxxx

>>>>>发送数据xxxxxxxxxxxxxx

>>>>>发送数据 MAIL FROM:

>>>>>发送数据 RCPT 到:

>>>>>发送数据DATA

>>>>>发送数据

>>>>>发送数据。

>>>>>发送数据QUIT

如何禁用此输出?我的 catalina.out 增长太快了。 setdebug(false) 方法并不能解决我的问题。

【问题讨论】:

  • 你试过session.setDebug(false)
  • 或者您是否使用属性-Dmail.debug=true 开始您的应用程序? - oracle.com/technetwork/java/faq-135477.html#debug
  • session.setDebug(false) 不能解决我的问题。我不在我的 tomcat 应用程序中使用 -Dmail.debug=true。
  • props.put("mail.debug", "false");
  • props.put("mail.debug", "false");不起作用。调试输出与显示的输出不同。

标签: java debugging email trace output


【解决方案1】:

春天这对我有用:

    <property name="javaMailProperties">
        <props>
            <prop key="mail.transport.protocol">smtp</prop>
            <prop key="mail.smtp.auth">false</prop>
            <prop key="mail.smtp.starttls.enable">true</prop>
            <prop key="mail.debug">false</prop>
        </props>
    </property>

使用 1.4.7+ 版本测试

【讨论】:

    【解决方案2】:

    setDebug方法无关!
    我使用的是 javax.mail 库的 1.40 版并且遇到了完全相同的问题。 SMTPTransport 类中有这行 System.out.println("&gt;&gt;&gt;&gt;&gt;Sending data " + data + "&lt;&lt;&lt;&lt;&lt;&lt;"); 代码行,它与调试日志无关,总是将其数据写入控制台!

    只需去获取 1.5 版本的库,问题就解决了。
    你可以从Maven repository获得它。

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-29
      • 2020-01-14
      • 1970-01-01
      • 2021-11-27
      • 2021-03-13
      相关资源
      最近更新 更多