如何在发送邮件时转储整个文件内容?

时间:2012-03-05 05:43:17

标签: java

我有一个接受xml文件的应用程序,在上传无效的xml文件时,它会发送一封包含该文件简要信息的邮件。我还需要包含整个文件内容更新(附件),这应该是理想的方式。

这就是我尝试过的(测试代码)

InputStream input = new BufferedInputStream(new FileInputStream("C:\\Simon\\csmclientbenz.xml"))
byte[] buffer = new byte[8192]

try {
    for (int length = 0; (length = input.read(buffer)) != -1;) {
        System.out.write(buffer, 0, length)
    }
} finally {
    input.close()
}

但目前它只打印部分文件。 xml文件可以大到6MB。我错过了什么?感谢

更新

发送邮件代码

public void sendMail(mailProp,mailData)
{       
    logger.debug("sendMail method")

    Properties properties = System.getProperties()
    properties.setProperty("mail.smtp.host", mailProp.host)
    Session session = Session.getDefaultInstance(properties)

    try{

        MimeMessage message = new MimeMessage(session)
        message.setFrom(new InternetAddress(mailProp.from))
        message.addRecipient(Message.RecipientType.TO,new InternetAddress(mailProp.to))
        message.setSubject("Configuration failed to upload for simon@abc.com")
        message.setContent(createMessage(mailData), "text/html")
        Transport.send(message)
        System.out.println("Sent message successfully....")
    }catch (MessagingException mex) {
         mex.printStackTrace()
    }
}

2 个答案:

答案 0 :(得分:2)

由于xml文件最大可达6 MB,因此在电子邮件消息中发送整个文件内容并不是一个好主意,最好将其作为电子邮件附件发送。您可以参考http://www.roseindia.net/javamail/SendAttachment.shtml查看发送电子邮件时如何发送邮件。

更好的是,您可以压缩此xml文件,然后再将其作为附件发送,以使用java的zip实体来减少附件大小(参考:http://docs.oracle.com/javase/1.4.2/docs/api/java/util/zip/package-summary.html

答案 1 :(得分:0)

BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(new File("C:\\Simon\\csmclientbenz.xml"))));

String line = null;

while((line = reader.readLine()) != null)
{
    System.out.println(line)
}