不开源项目aspose.email最新版23.10的一些科普

Aspose
placeholder image
admin 发布于:2024-09-27 15:33:52
阅读:loading

前面在摸索了Aspose的Cells、Words、Pdf等多款组件,分别是常见的Word/Excel/Pdf办公软件,闲下心来又继续了解了一下Aspose For Java语言的其他软件,经过一些持续的分析和摸索实践越来越多的将它们给科学化,即所有的软件(组件)均不修改任何jar包依赖,纯粹使用反射的形式来调用,也就是说在API的使用前进行一次特殊的代码注册,即可实现授权,全程不需要License之类的xml,或是文档无水印、或是文档页数限制、或是获取内容无限制,等等。

特别说明:只为单纯的学习摸索与自我突破,商业软件请勿直接使用于生产环境(购买商业授权)

1.基本介绍

本次实践的是Aspose.email的23.10版本,它是一个功能强大的用于处理 Email 的开发工具包,如果有需要使用Java来操作 Email 文件的需求可以了解一下它,比如发生邮件、接收邮件、解析邮件,等等。本次示例提供了将 Eml 文件格式内容读取的简单示例,更多/更专业的API使用有疑问请自行转至官网查看或学习,示例参考如下几点:

(1)提供了将EML文件格式文件内容读取的示例,读取到了参数有:邮件ID、发送人、收件人、抄送人、密送人、标题、内容、附件、内联附件等等;

(2)提供了使用反射调用特定的class代码逻辑,无需修改原始的jar;

(3)科学使用的目的是解析到的数据完整,且无授权提示;

(4)科学使用的版本有23.10;

(5)相较于Apache开源的Mime4j解析Eml文件实现要简单的多,参见本站《Java解析eml邮件格式文件》文章;

2.示例代码

public class AsposeEmailReflectTest extends cn.chendd.cells.base.BaseTest {

    @Test
    public void test() throws Exception {

        /*注册 23.10*/
        RegisterEmail.registerEmail2310();

        try (MailMessage message = MailMessage.load(getClass().getResource("/my.eml").getPath())) {
            System.out.println("\r\n======基础信息======");
            System.out.println("邮件ID:" + message.getMessageId());
            System.out.println("发送时间:" + message.getDate());
            System.out.println("标题:" + message.getSubject());
            System.out.println("内容:" + message.getHtmlBody());
            System.out.println("发件人:" + message.getFrom());
            System.out.println("收件人:" + message.getTo());
            System.out.println("抄送人:" + message.getCc());
            System.out.println("密送人:" + message.getBcc());
            System.out.println("\n======内容信息======");
            System.out.println("邮件内容:" + message.getHtmlBodyText(true));
            //---获取到邮件内容中的图片
            // 获取邮件中的CID引用的内联图片
            message.save(super.getRootFile("aspose.email/邮件内容.html") , SaveOptions.getDefaultHtml());
            System.out.println("\n======附件信息======");
            final AttachmentCollection attachments = message.getAttachments();
            final int size = attachments.size();
            System.out.println("附件个数:" + size);
            for (int i = 0; i < size; i++) {
                final Attachment attachment = attachments.get_Item(i);
                String fileSzie = FileUtils.byteCountToDisplaySize(attachment.getContentStream().available());
                System.out.println("第 " + (i + 1) + " 个附件,名称:" + attachment.getName() + ",附件大小:" + fileSzie);
            }
            final LinkedResourceCollection resources = message.getLinkedResources();
            System.out.println("\n======内嵌附件======");
            //---获取到邮件内容中的图片
            final IList list = resources.getIList();
            for (int i = 0; i < list.size(); i++) {
                LinkedResource resource = (LinkedResource) list.get_Item(i);
                final ContentType contentType = resource.getContentType();
                System.out.println(String.format("邮件内容中内嵌的图片名称:%s,大小:%s" , FilenameUtils.getBaseName(contentType.getName()) ,
                        FileUtils.byteCountToDisplaySize(resource.getContentStream().available())));
            }

        }
    }

}

3.运行示例

image

(将HTML转换为png)

4.其它说明

(1)`aspose.xxx`不是开源免费的使用,Github上有示例项目,包含了大量的示例,示例的结果就是生成了一些《Evaluation Warning》警告、水印、内容页数限制、内容文本限制等;

(2)aspose旗下有许多的产品,都是商业付费版本,常见于各种文档格式文件的操作,都需要商业授权使用,也基本都是支持多种编程语言的,如有Java、C++、.NET等等,官网也有多种在线示例;

(3)示例与相关文件下载:无,注:下载并不包含具体的科学实现部分,只是源文件与示例输出文件;



 点赞


 发表评论

当前回复:作者

 评论列表


留言区