做一个从邮件服务器接受邮件的客户端,从服务器上读邮件。
刚开始只是接受简单的文本邮件所以把每个邮件都读到一个string里面,然后在split()成很多行,再根据邮件格式来解析邮件,
最后把邮件的各个项都存到数据库去。
现在发现如果邮件的附件比较大,这个string的长度就很大,可能被撑爆掉了。
这个时候应该怎么办才好?
一行一行的读,每行都放到一个string数组去?
刚开始只是接受简单的文本邮件所以把每个邮件都读到一个string里面,然后在split()成很多行,再根据邮件格式来解析邮件,
最后把邮件的各个项都存到数据库去。
现在发现如果邮件的附件比较大,这个string的长度就很大,可能被撑爆掉了。
这个时候应该怎么办才好?
一行一行的读,每行都放到一个string数组去?
那RichTextBox的rtf不是更要爆了
我记得好像字符串是最大2亿字节,不知道是不是说c#的字符串
邮件比较大的时候就出问题了
对于邮件的大小,没有办法控制,举一个极端的边界,你处理邮件的程序应该是并发的,当所有同时处理的邮件大小大于了1.5g的时候,你的程序就当掉了。
分而治之,是保证系统稳定运行的一个办法。
不过thunder bird只是保存原文件,我是解析了再存到数据库去~
用一个线程去下载邮件保存成文件,多个线程去读文件解析文件并保存数据到数据库。这样效率应该会比较高,IO慢主要是写和锁,这样写只有一个线程,读的话每个线程处理的一个文件,这样尽可能避免IO冲突。