【问题标题】:Attachment of CSV content into a mail将 CSV 内容附加到邮件中
【发布时间】:2012-01-18 16:04:47
【问题描述】:

我的一个 servlet 在字符串变量中创建 CSV 内容。

我想将此 CSV 作为附件发送,但每个人都知道 GAE 的局限性:无法创建文件。所以,我决定寻找另一种解决方案。

我的方法是像这样附加 CSV 字符串:

String csv = "";
Message msg = new MimeMessage(session);
msg.setDataHandler(new DataHandler(new ByteArrayDataSource(csv.getBytes(),"text/csv")));
msg.setFileName("data.csv");

我收到邮件但没有附件。 CSV 字符串已集成到邮件的正文部分。

如何将此 CSV 字符串像 CSV 文件一样附加到邮件中?

谢谢

【问题讨论】:

    标签: java google-app-engine email csv


    【解决方案1】:

    您需要MimeMultipart 消息并将其作为 MimeBodyPart 附加:

    Message msg = new MimeMessage(session);
    MimeBodyPart attachFilePart = new MimeBodyPart();
    attachFilePart.setDataHandler(new DataHandler(new ByteArrayDataSource(csv.getBytes(),"text/csv")))
    attachFilePart.setFileName("data.csv");
    msg.addBodyPart(attachFilePart);
    

    【讨论】:

      【解决方案2】:
          javax.mail.Multipart multipart = new MimeMultipart();
      
          javax.mail.internet.MimeBodyPart messageBodyPart =   new  javax.mail.internet.MimeBodyPart();
      
          multipart.addBodyPart(messageBodyPart);
      
          javax.activation.DataSource source = new FileDataSource("C:\\Notes\\data.csv");
      
          messageBodyPart.setDataHandler( new DataHandler(source));
          messageBodyPart.setFileName("data.csv");
      
          multipart.addBodyPart(messageBodyPart);
          msg.setContent(multipart);
      
          MimeBodyPart part = new MimeBodyPart();
          part.setText(text);
      
          multipart.addBodyPart(part);
      

      【讨论】:

      • GAE无权访问文件系统的问题
      • @splix App Engine 应用对其文件系统具有只读访问权限。不过,绝对没有理由一开始就将数据写入文件 - 这是一个巨大的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-01
      • 2012-11-15
      • 1970-01-01
      • 2021-10-01
      • 2016-08-15
      • 1970-01-01
      • 2021-01-08
      相关资源
      最近更新 更多