【问题标题】:java mail logs html template to catalina.outjava邮件记录html模板到catalina.out
【发布时间】:2013-07-22 07:35:37
【问题描述】:

我正在使用velocity 为要发送的电子邮件生成基于HTML 模板的内容,并使用Spring 的MimeMessageHelper Java Mail API 来发送电子邮件。我面临的问题是,在渲染时,HTML 模板被抛出到catalina.out,这使得文件变大,这是不可取的。

我有一个单独的应用程序日志文件,用于生成日志。有什么办法可以让我将此渲染重定向到我的应用程序日志文件?或者我可以阻止这个被扔到catalina.out

以下是发送电子邮件时写入的详细信息

Loading javamail.default.providers from jar:file:/D:/workspace/EmailService/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/email-service/WEB-INF/lib/mail-1.4.jar!/META-INF/javamail.default.providers
DEBUG: loading new provider protocol=imap, className=com.sun.mail.imap.IMAPStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=imaps, className=com.sun.mail.imap.IMAPSSLStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=smtp, className=com.sun.mail.smtp.SMTPTransport, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=smtps, className=com.sun.mail.smtp.SMTPSSLTransport, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=pop3, className=com.sun.mail.pop3.POP3Store, vendor=Sun Microsystems, Inc, version=null
DEBUG: loading new provider protocol=pop3s, className=com.sun.mail.pop3.POP3SSLStore, vendor=Sun Microsystems, Inc, version=null
DEBUG: getProvider() returning provider protocol=smtp; type=javax.mail.Provider$Type@2025b64d; class=com.sun.mail.smtp.SMTPTransport; vendor=Sun Microsystems, Inc
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.nagarro.com", port 587, isSSL false
 220 fuseout2c MailAnyone extSMTP Tue, 23 Jul 2013 02:37:58 -0700
DEBUG SMTP: connected to host "smtp.nagarro.com", port: 587

EHLO Vaibhav202001
 250-fuseout2c Hello Vaibhav202001 [14.141.12.161]
 250-SIZE 52428800
 250-PIPELINING
 250-AUTH LOGIN
 250-STARTTLS
250 HELP
DEBUG SMTP: Found extension "SIZE", arg "52428800"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "HELP", arg ""
STARTTLS
220 TLS go ahead
EHLO Vaibhav202001
250-fuseout2c Hello Vaibhav202001 [14.141.12.161]
250-SIZE 52428800
250-PIPELINING
250-AUTH LOGIN
250 HELP
DEBUG SMTP: Found extension "SIZE", arg "52428800"
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN"
DEBUG SMTP: Found extension "HELP", arg ""
DEBUG SMTP: Attempt to authenticate
AUTH LOGIN
334 VXNlcm5hbWU6
anNhZy5zdXBwb3J0QG5hZ2Fycm8uY29t
334 UGFzc3dvcmQ6
SnNhZ0AxMjM0
235 Authentication succeeded
DEBUG SMTP: use8bit false
MAIL FROM:<jsagteam@nagarro.com>
250 OK
RCPT TO:<vaibhav.shukla@nagarro.com>
250 Accepted
DEBUG SMTP: Verified Addresses
DEBUG SMTP:   vaibhav.shukla@nagarro.com
DATA
354 Enter message, ending with "." on a line by itself
Date: Fri, 26 Jul 2013 12:00:48 +0530 (IST)
From: JSAG Team <jsagteam@nagarro.com>
To: vaibhav.shukla@nagarro.com
Message-ID: <1817391686.01374820248531.JavaMail.vaibhav2020@Vaibhav202001>
Subject: JSAG Home page - subscribers list
MIME-Version: 1.0
Content-Type: multipart/mixed; 
boundary="----=_Part_0_999692932.1374820244866"

------=_Part_0_999692932.1374820244866
Content-Type: multipart/related; 
boundary="----=_Part_1_1241615899.1374820244889"

------=_Part_1_1241615899.1374820244889
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit


          //My Email Template goes here

------=_Part_1_1241615899.1374820244889--

------=_Part_0_999692932.1374820244866--


250 OK id=1V1Z2g-0002Rh-HO
QUIT
221 fuseout2c closing connection

这里是日志配置

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=${catalina.home}/logs/email-service.log
log4j.appender.file.MaxFileSize=1000KB
log4j.appender.file.MaxBackupIndex=1
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-4p %m%n
log4j.appender.DatePattern='.'yyyy-MM-dd

# Root logger option
log4j.rootLogger=WARN, file
log4j.logger.com.nagarro=WARN

还有发送邮件的代码

JavaMailSender mailSender; // injected through Spring DI

/**
 * The mail message.
 */
SimpleMailMessage mailMessage; // Spring DI

@Override
public void sendEMail(final EmailServiceRequest request, byte[] data) {
    MimeMessage message = mailSender.createMimeMessage();
    OutputStream outStream = null;
    try {

        MimeMessageHelper helper = new MimeMessageHelper(message, true);


        // set attributes
        if (null != request.getRecipientEmailId()) {
            helper.setTo(request.getRecipientEmailId());
        }
        helper.setFrom(request.getSenderEmailId());
        helper.setSubject(request.getSubject());
        helper.setText(request.getContent(), true);

        // check for recipient list
        if (null != request.getRecipients() && !request.getRecipients().isEmpty()) {
            InternetAddress[] recipients = new InternetAddress[request.getRecipients().size()];

            for (int index = 0; index < request.getRecipients().size(); index++) {
                recipients[index] = new InternetAddress(request.getRecipients().get(index));
            }
            helper.setTo(recipients);
        }

        // data handler
        if (null != data) {
            try {

                File file = File.createTempFile(request.getAttachmentName(), "");
                outStream = new FileOutputStream(file);
                outStream.write(data);

                helper.addAttachment(request.getAttachmentName(), file);
            } catch (IOException e) {
                logger.error(e.getMessage(), e);
            } finally {
                try {
                    outStream.flush();
                    outStream.close();
                } catch (IOException e) {
                    logger.error(e.getMessage(), e);
                }
            }
        }

        if (!StringUtil.isNullOrEmpty(request.getEmailIdCC())) {
            helper.addCc(request.getEmailIdCC());
        }
        if (!StringUtil.isNullOrEmpty(request.getEmailIdBCC())) {
            helper.addBcc(request.getEmailIdBCC());
        }

        mailSender.send(message);
    } catch (MessagingException e) {
        logger.error(e.getLocalizedMessage(), e);
    }
}

【问题讨论】:

  • 您是如何配置日志记录的?在我看来,您的日志级别是 DEBUG,这些是调试消息。
  • 我已经添加了发送邮件的配置和代码。
  • 您的属性文件中是否启用了 mail.debug
  • 一点也不。除了我在上面发布的那个之外,我没有其他属性文件

标签: java mime-types html-email jakarta-mail


【解决方案1】:

我假设您在上下文配置中定义了一个类 org.springframework.mail.javamail.JavaMailSenderImpl 的 bean。

如果是这样,您可以尝试在会话上设置调试属性。

mailSender.getSession().setDebug(false);

或者创建一个属性文件并在那里设置设置值。

mail.debug=false

【讨论】:

  • 是的,我确实为 JavaMailSenderImpl 创建了一个 bean。让我看看这是否有效。
猜你喜欢
  • 2021-03-16
  • 2021-05-21
  • 2020-09-18
  • 2017-08-06
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 2011-03-26
相关资源
最近更新 更多