“ADODB.StreamClass”的 COM 报错.求大神们.

jokdsh 2011-12-31 04:45:30

这个问题.是读取后缀为 .eml 格式的时候 使用 ADODB.Stream读取报错.

本地测试没问题.服务器就出错了.╮(╯▽╰)╭.

自己弄了2天了,没解决.求大神帮助
...全文
155 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
662126 2012-11-20
  • 打赏
  • 举报
回复
怎么搞定的啊,我也遇到这个问题
jokdsh 2012-01-10
  • 打赏
  • 举报
回复
已搞定.
jokdsh 2012-01-09
  • 打赏
  • 举报
回复
顶贴哇.. 木人鸟我.. 还木有解决哇.
jokdsh 2012-01-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 net_lover 的回复:]

PgUtil是自定义的类或者dll里面的,你下载代码的里面应该有
[/Quote]

都下载下来了. 源文件 只有3个类. 其他没有啥DLL.
你方便留下QQ吗.向你请教
孟子E章 2012-01-04
  • 打赏
  • 举报
回复
PgUtil是自定义的类或者dll里面的,你下载代码的里面应该有
jokdsh 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 net_lover 的回复:]

你可以采用开源的代码进行读取
http://sourceforge.net/projects/sasa/files/

或者
http://www.codeproject.com/KB/office/EML_ReaderEx.aspx
[/Quote]

刚刚在尝试 http://www.codeproject.com/KB/office/EML_ReaderEx.aspx.
有几点不太明白. 返回的 return PgUtil.StripHTML(sText);
PgUtil是哪里类?
jokdsh 2012-01-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 net_lover 的回复:]

注册ADODB.Stream组件

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
[/Quote]

这个我试过了. 元旦放假3天还是没解决出来.
孟子E章 2011-12-31
  • 打赏
  • 举报
回复
你可以采用开源的代码进行读取
http://sourceforge.net/projects/sasa/files/

或者
http://www.codeproject.com/KB/office/EML_ReaderEx.aspx
孟子E章 2011-12-31
  • 打赏
  • 举报
回复
注册ADODB.Stream组件

regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
jokdsh 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 wxr0323 的回复:]

本地测试没问题.服务器就出错了.╮(╯▽╰)╭.

这个需要注册什么组件不。
[/Quote]

就是不知道要注册什么,所以还没找出问题来.
我也是估计是服务器缺少某个dll或者未注册.但是具体我不清楚.
子夜__ 2011-12-31
  • 打赏
  • 举报
回复
本地测试没问题.服务器就出错了.╮(╯▽╰)╭.

这个需要注册什么组件不。

jokdsh 2011-12-31
  • 打赏
  • 举报
回复
jokdsh 2011-12-31
  • 打赏
  • 举报
回复


这是我后台代码 ashx文件里面的.


/// <summary>
/// 读取eml格式文件
/// </summary>
/// <param name="file">路径</param>
/// <returns></returns>
public string ReadEML(string file)
{
CDO.Message oMsg = new CDO.Message();
ADODB.Stream stm = null;
//读取EML文件到CDO.MESSAGE,做分析的话,实际是用了下面的部分
try
{
stm = new ADODB.Stream();
stm.Open(System.Reflection.Missing.Value,
ADODB.ConnectModeEnum.adModeUnknown,
ADODB.StreamOpenOptionsEnum.adOpenStreamUnspecified,
"", "");
stm.Type = ADODB.StreamTypeEnum.adTypeBinary;//二进制方式读入

stm.LoadFromFile(file); //将EML读入数据流

oMsg.DataSource.OpenObject(stm, "_stream"); //将EML数据流载入到CDO.Message,要做解析的话,后面就可以了。
}
catch (IOException ex)
{
throw ex;
}
finally
{
stm.Close();
}
return oMsg.HTMLBody;//oMsg里包含了邮件相关的所有信息
}
jokdsh 2011-12-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]

定义成StreamClass而不是Stream试试
[/Quote]

试了不行,还是一样
孟子E章 2011-12-31
  • 打赏
  • 举报
回复
定义成StreamClass而不是Stream试试

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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