服务器最大附件大小为3 mb时,SMTP服务器不允许附件大小为2 mb压缩文件?

时间:2016-04-18 12:49:58

标签: spring smtp javamail

我正在编写一个调度程序,使用压缩文本报告作为zip附件向某些ID发送电子邮件。报告我正在生成包含大量数据。所以我将它分成相等的部分并压缩它们。但是服务器拒绝发送邮件。以下是堆栈跟踪。

  

DEBUG SMTP:找到扩展名“TURN”,arg“”DEBUG SMTP:找到扩展名   “SIZE”,arg“2097152”52 4.3.1消息大小超过固定最大值   消息大小DEBUG SMTP:得到响应代码552,响应:552   4.3.1消息大小超过固定的最大消息大小RSET 250 2.0.0重置com.sun.mail.smtp.SMTPSendFailedException:552 4.3.1消息   大小超过固定的最大邮件大小   com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1829)     在   com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:1634)     在   com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:889)     在   org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:403)     在   org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:342)     在   org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:338)     在com.bi.spring.SpringMailer.sendMail(SpringMailer.java:57)at   com.bi.core.InitiateMail.main(InitiateMail.java:40)

我已经与infra团队进行了核实。他们说最大附件限制为3MB。这里的问题是即使我将附件大小减小到1.2,1.5 mb,这也是12,15 mb的压缩文本文件。

以下调试消息对于任何附件大小保持相同

  

DEBUG SMTP:找到扩展名“SIZE”,arg“2097152”

我发送邮件的代码是:

public void sendMail(String dear, String content ,List<String> fileList) {
   try
   {

       Calendar             calendar     =   Calendar.getInstance();
        calendar.add(Calendar.MONTH, -1);
          SimpleDateFormat format =  new SimpleDateFormat ("MMMM yyyy");
          Date date = calendar.getTime();
            String dateString=format.format(date);



        for(int i=0;i<fileList.size();i++)
        {
             MimeMessage message = mailSender.createMimeMessage();
            MimeMessageHelper helper = new MimeMessageHelper(message, true);

            helper.setFrom(simpleMailMessage.getFrom());
            helper.setTo(simpleMailMessage.getTo());

            helper.setText(String.format(simpleMailMessage.getText(), dear, content+dateString));
            helper.setSubject(simpleMailMessage.getSubject()+dateString+" | Part-"+(i+1));
            FileSystemResource file = new FileSystemResource(fileList.get(i));
            helper.addAttachment(file.getFilename(), file);
            try{
            mailSender.send(message);
            }
            catch(Exception e){
                Logger.log("Exception while sending the message|"+e.toString(),5);
                e.printStackTrace();
            }
            file=null;
            helper=null;
            message=null;
        }

     }
     catch (MessagingException e) 
     {
     Logger.log("MessagingException in SpringMailer|sendMail() "+e.toString(), 5);
     }
    catch (MailParseException e) 
     {
     Logger.log("MailParseException in SpringMailer|sendMail() "+e.toString(), 5);
     }
     catch (Exception e) 
     {
        Logger.log("Exception in SpringMailer|sendMail() "+e.toString(), 5);
     }

}

以上是发送电子邮件的主要代码。请告诉我我在这里缺少什么?

Edit1:我按照建议编辑了代码。现在异常消失了。但只有第一封邮件被送达。剩余的未送达。我从日志中观察以下调试消息。但剩下的邮件尚未送达。

排队邮件以进行投放 QUIT

Edit2:我已经和我们的infra团队核实过了。显然,SMTP服务器存在一些问题。切换到其他服务器后,它开始按预期工作。

0 个答案:

没有答案