急求outlook邮件解析程序!!!!

lOgpIe 2004-07-11 12:20:42
需要能够解析从outlook中导出的邮件
如:*.eml(outlook邮件),*.msg(Exchange邮件)用组件做的也可以,非常着急
需要DEMO

注:不需要能接发邮件
只要能把*.eml或*.msg解码成:发件人、收件人、抄送人、时间、
标题、邮件内容、附件数、附件标题、附件内容等内容即可!

好像delphi的outlook组件可以,不过从没用过:(



...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lOgpIe 2004-07-15
  • 打赏
  • 举报
回复
~~~~~~~~~
lOgpIe 2004-07-12
  • 打赏
  • 举报
回复
谢谢,可这段代码好像只是打开作用吧
没有解码作用
aiirii 2004-07-11
  • 打赏
  • 举报
回复
function GetMsgData(FileName: String; Stream: TMemoryStream): Boolean;
function GetEmlData(FileName: String; Stream: TMemoryStream): Boolean;

implementation

function GetEmlData(FileName: String; Stream: TMemoryStream): Boolean;
begin

Stream.Clear;
try
Stream.LoadFromFile(FileName);
result:=True;
except
result:=False;
end;

end;

function GetMsgData(FileName: String; Stream: TMemoryStream): Boolean;
var pvStg: IStorage;
pvStm: IStream;
stat: TStatStg;
dwSize: Integer;
const
StgFlags = STGM_READ or STGM_SHARE_EXCLUSIVE;
StmName = '__substg1.0_1000001E';
begin

// Set default result
result:=False;

// Open storage file
if (StgOpenStorage(PWideChar(WideString(FileName)), nil, StgFlags, nil, 0, pvStg) = S_OK) then
begin
// Attempt to get the stream
if (pvStg.OpenStream(PWideChar(WideString(StmName)), nil, StgFlags, 0, pvStm) = S_OK) then
begin
// Stat the stream to get the size
if (pvStm.Stat(stat, STATFLAG_NONAME) = S_OK) then
begin
// Clear memory stream
Stream.Clear;
Stream.Size:=stat.cbSize;
// Write contents of stream to memory stream
result:=(pvStm.Read(Stream.Memory, stat.cbSize, @dwSize) = S_OK);
end;
// Release the stream
pvStm:=nil;
end;
// Release the storage interface
pvStg:=nil;
end;

end;

-----
Example of usage

var
ms: TMemoryStream;
begin

ms:=TMemoryStream.Create;
if GetMsgData('c:\mypath\myfile.msg', ms) then
MessageBox(0, ms.Memory, nil, MB_OK);
if GetEmlData('c:\mypath\myfile.eml', ms) then
MessageBox(0, ms.Memory, nil, MB_OK);

end;

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧