【急】關于解析*.eml文件用的什么方法?

Derekfan 2008-12-09 09:41:23
各位大俠你們好:
對于解析eml文件的方法是什么呢?通過IMessage接口來實現,但是我在msdn上面找不到从文件里得到信息的例子和说明。
如果有做個這中文件解析的大俠,請和我分享一下你們的經驗。
...全文
302 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiakehuigui 2008-12-24
  • 打赏
  • 举报
回复
关注
Derekfan 2008-12-19
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 maisuiki 的回复:]
还是没有什么好办法  自己解析字符串了!!把正文内容放到IE控件里显示,其他信息的标签还好都是一样的,也不麻烦
[/Quote]
但是對于附件的解析,如何放到顯示界面上呢?
maisuiki 2008-12-18
  • 打赏
  • 举报
回复
还是没有什么好办法 自己解析字符串了!!把正文内容放到IE控件里显示,其他信息的标签还好都是一样的,也不麻烦
Derekfan 2008-12-17
  • 打赏
  • 举报
回复
maisuiki 2008-12-16
  • 打赏
  • 举报
回复
我现在也遇到这个问题 要解析eml文件 你的解决了吗??
maisuiki 2008-12-16
  • 打赏
  • 举报
回复
jiakehuigui 2008-12-12
  • 打赏
  • 举报
回复
mark......
jiakehuigui 2008-12-12
  • 打赏
  • 举报
回复
mark......
Derekfan 2008-12-12
  • 打赏
  • 举报
回复
浮起来.......
Derekfan 2008-12-11
  • 打赏
  • 举报
回复
浮起來吧,神呀救救我呀!
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
[Quote=引用 19 楼 Derekfan 的回复:]
UP 來人呀 咳..........................
[/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote][/Quote]
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
UP 來人呀 咳..........................
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 27 楼 Derekfan 的回复:]
引用 26 楼 oyljerry 的回复:
#import   "c:\\program   files\\common   files\\system\\ado\\msado15.dll"   no_namespace   rename("EOF",   "ADOEOF")
#import   "c:\\program   files\\common   files\\microsoft   shared\\cdo\\cdoex.dll"
...............
CoInitialize(NULL);
_bstr_t   url;
_bstr_t   bstrEmpty("");
CDO::IDataSourcePtr   pDsrc(__uuidof(CDO::Item));
_variant_t   varOpt(DISP_E_PARAMNOT…
[/Quote]
還是不行呀咳咳咳。。。。。。。。
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 oyljerry 的回复:]
#import  "c:\\program  files\\common  files\\system\\ado\\msado15.dll"  no_namespace  rename("EOF",  "ADOEOF")
#import  "c:\\program  files\\common  files\\microsoft  shared\\cdo\\cdoex.dll"
...............
CoInitialize(NULL);
_bstr_t  url;
_bstr_t  bstrEmpty("");
CDO::IDataSourcePtr  pDsrc(__uuidof(CDO::Item));
_variant_t  varOpt(DISP_E_PARAMNOTFOUND,VT_ERROR);
_Connectio…
[/Quote]

版主太強了 這個我還沒有找到過,我先試試,如果行的話馬上結貼。
oyljerry 2008-12-10
  • 打赏
  • 举报
回复
#import "c:\\program files\\common files\\system\\ado\\msado15.dll" no_namespace rename("EOF", "ADOEOF")
#import "c:\\program files\\common files\\microsoft shared\\\cdo\\cdoex.dll"
...............
CoInitialize(NULL);
_bstr_t url;
_bstr_t bstrEmpty("");
CDO::IDataSourcePtr pDsrc(__uuidof(CDO::Item));
_variant_t varOpt(DISP_E_PARAMNOTFOUND,VT_ERROR);
_ConnectionPtr pConn(__uuidof(Connection));
pConn->Provider = "ExOLEDB.DataSource";
url=......;//set url
try
{
pConn->Open(url, bstrEmpty,bstrEmpty,-1);
pDsrc->Open(url,variant_t( (IDispatch*)pConn, true),
adModeRead, adFailIfNotExists,adOpenSource,
bstr_t(),bstr_t());
}
catch(_com_error e)
{
ShowErr(e.Description());
throw e;
}
CDO::IMessage* pMsg;
HRESULT hr=pDsrc->QueryInterface(&pMsg);
if(SUCCEEDED(hr)&&pMsg!=NULL)
{
BSTR bstto;
pMsg->get_To(&bstto);
ShowErr(CString(bstto));
SysFreeString(bstto);
pMsg->Release();
}
CoUninitialize();
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
救命呀,大俠大仙來看看呀!新鮮出爐呀!
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 oyljerry 的回复:]
引用 9 楼 oyljerry 的回复:
http://www.codeproject.com/KB/cs/mime_project.aspx?display=PrintAll&fid=221998&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=176&select=1431109

看看这个呢...
[/Quote]
報告版主這個是C#的,我需要的是vc的,如果你想告訴我思路的話,我是會的,但是我現在是想通過IMessage接口來實現。

#import  <cdosys.dll>  no_namespace  raw_interfaces_only 
#import "c:\program files\common files\system\ado\msado15.dll" no_namespace raw_interfaces_only
#include "cdosysstr.h"
#include "cdosyserr.h"
#include <comdef.h>
...
IMessagePtr Load_Message_from_File(_bstr_t path)
{
/*
** This example shows a common use of the ADO Stream
** object with CDO, namely, opening a serialized
** message from a file on disk and loading it into
** a CDO Message object.
**/

_StreamPtr pStm(__uuidof(Stream));
_variant_t varOptional(DISP_E_PARAMNOTFOUND,VT_ERROR);
try {
pStm->Open(
// pStm->raw_Open(
varOptional,
adModeUnknown,
adOpenStreamUnspecified,
NULL,
NULL);
pStm->LoadFromFile(path);
}
catch(_com_error e)
{
throw e;
}

IMessagePtr iMsg(__uuidof(Message));
IDataSourcePtr iDsrc;
iDsrc = iMsg;

try {
iDsrc->OpenObject(pStm,_bstr_t("_Stream"));
}
catch(_com_error e)
{
throw e;
}
return iMsg;
}
void GetFrom()
{
IMessagePtr imsgptr=Load_Message_from_File("c:\\test.eml");
BSTR bsfrom;
imsgptr->get_From(&bsfrom);
_bstr_t bfrom(bsfrom);

AfxMessageBox(bfrom);
}

我試著使用曾經csdn的牛人的代碼,但是跑到_StreamPtr pStm(__uuidof(Stream)); 這句就出錯了。
oyljerry 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 oyljerry 的回复:]
http://www.codeproject.com/KB/cs/mime_project.aspx?display=PrintAll&fid=221998&df=90&mpp=25&noise=3&sort=Position&view=Quick&fr=176&select=1431109
[/Quote]
看看这个呢...
Derekfan 2008-12-10
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 Mackz 的回复:]
你可以看看Outlook的VBA帮助。
[/Quote]
謝謝大俠
但是
什么vba幫助呀?
我剛剛看了outlook的幫助文檔,它里面只是對于outlook的操作呀?
菜牛 2008-12-10
  • 打赏
  • 举报
回复
你可以看看Outlook的VBA帮助。
加载更多回复(18)

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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