Eml文件转换成MailMessage类型

背景

前段时间由于国产化的趋势,公司将Outlook弃用转而使用网页版邮箱替代。这就带来了一些邮箱自动化方面的问题。在使用Uipath对邮件自动化中,我们通过outlook相关的组件从而达到自动化收发邮件的目的。但是,启动网页版邮箱以后这些组件也不再可用,另外公司内使用smtp协议也被限制且需要额外申请开通白名单。鉴于此,我本来打算等待相关部门安排下来之后,再思考解决邮件收发的问题。这个时候,收到了公司业务老师的消息,业务老师自己动手开发了"模拟网页邮箱登陆自动发送邮件"的组件,这个消息给了我动力。在该动力的驱使下,我开始着手摸索如何开发自动接收邮件的组件。

思路

通过查看GetOutlookMailMessages组件,我们可以看到,该组件的输出为类型System.Net.Mail.MailMessage的List集合。因此我们可以借鉴该组件的形式,形成模拟网页版邮箱收取邮件的组件。通过遍历该输出结果集合,我们可以获取每封邮件的收发件人、主题、抄送人等信息。

通过测试发现,将网页收件箱中的邮件批量导出,邮箱集合会以EML格式保存为ZIP格式的文件。通过遍历解压后文件中所有的eml邮件,将eml格式一一转换成MailMessage的格式,再保存为MailMessage的集合。这样就可以得到我们想要的输出。步骤如下,

  1. 批量导出邮箱,保存形式为zip文件;

  2. 解压zip文件,并通过Directory.GetFiles获取所有eml邮件路径的集合;

  3. 通过循环遍历步骤2的路径集合,一一转换为MailMessage格式;

  4. 在步骤3中,将MailMessage格式的文件添加到一个集合。

实现

根据上面的思路,我们完成对"模拟获取邮件"的组件开发并不困难,但是上述步骤3将eml格式文件转换为Mailmessages文件中遇到了问题。

1.通过查找资料,我打算通过Uipath社区提供的组件Read Email from Saved File to Object完成格式之间的转换,但是测试之后发现,输出该mailmessage对象的属性皆为空值,获取不到收件时间、主题等信息。

Read Email from Saved File to Object下载链接:https://marketplace.uipath.com/listings/read-email-from-saved-file-to-object

2.于是,改换搜索思路,"通过C#转换Eml文件为MailMessage的可行的方法,结果搜到了如下的这篇文章:

”Easily Retrieve Email Information from .EML Files“  链接:https://www.codeproject.com/Articles/76607/Easily-Retrieve-Email-Information-from-EML-Files-R

通过该篇文章提供的代码,我们进行封装组件,通过重写execute方法,定义好输入、输出参数,按文章提供的调用方法(如下代码段)获得输出变量。

MimeReader mime = new MimeReader();     // this class processes the .EML mime content// this get's the MailMessage into Peter's RxMailMessage class// which is derived from the MS MailMessage classRxMailMessage mm = mime.GetEmail(sEmlPath);
最终完成了对"模拟网页邮箱获取邮件"的组件。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值