用PSTSDK读取OUTlOOK中的邮件
2015-08-18 14:34
316 查看
本文原创转载请加上原文地址。谢谢。(此文任然有一些细节问题。要想得到更精确的邮件读取可以mail给我:
Biseny@qq.com
)
转载请标明地址
微软公布了OUTLOOK 的数据文件PST的数据格式。
PSTSDK下载地址:http://pstsdk.codeplex.com/releases/view/48297
SDK还存在一些问题。所以不断更新中。
下载后我的编译环境:WIN7+VS2010+Boost库。还必须在Unicode环境下使用。试了多种环境竟然编译不了。没法。只有这种环境下才能通过。
写出来的dll要在安装了“vs2010运行库”的环境下面才能使用。
运行库下载地址:http://www.orsoon.com/Soft/9389.html (官网上有。吥过我没有找到!!)怕毒的还是去官网看下吧。
(我這裡還有個方法。可以不安裝運行庫也能使用生成的DLL)。。需要的聯繫我:Biseny@qq.com
首先新建项目。引用头文件
#include “pstsdk/pst/pst.h”
然后原形声明:
void process_pst(const pstsdk::pst& p);//这里接受PST数据文件
void process_folder(const pstsdk::folder& f)//这里遍历数据文件里面的第一层目录结构
void process_message(const pstsdk::message& m);//这里开始遍历目录里面的邮件。邮件内容都从这里读取出来。
void process_recipient(const pstsdk::recipient& r);//这里开始遍历邮件里面的详细信息。发件人。收件人都还有服务器配置都从这里读取出来。
void process_attachment(const pstsdk::attachment& a);//这里是读取每封邮件的里面的附件。
然后:
pst PinND(“这里写路径。”);
process_pst(PinND);
然后看下面:
void process_folder(const pstsdk::folder& f)
{
f.get_name().c_str();//获取PST里面装邮件的目录比如:收件箱,发件箱,已删除邮件。
f.get_message_count();//这里可以获得目录里面的邮件数量。方便遍历。
for_each(f.message_begin(),f.message_end(), process_message);//调用 process_message 方法 对邮件进行遍历。。
for_each(f.sub_folder_begin(), f.sub_folder_end(), process_folder);//这里用递归。循环读取目录。
}
void process_message(const pstsdk::message& m)
{
m.get_attachment_count();//这里可以获取。附件的数量。
m.size();//这里可以获得邮件大小。
m.get_subject();//这里可以获得邮件的标题。
m.get_body;//这里可以获得邮件的正文。
//这里获得邮件相信信息的数量然后进行遍历。
if(m.get_recipient_count() > 0)
{
for_each(m.recipient_begin(), m.recipient_end(), process_recipient);
}
//判断附件数并进行处理
if(m.get_attachment_count() > 0)
{
for_each(m.attachment_begin(), m.attachment_end(), process_attachment);
}
}
//这个方法提取出附件。
void process_attachment(const pstsdk::attachment& a)
{
a.get_filename().c_str();//附件名字。
if(a.is_message())
{
process_message(a.open_as_message());
}
else
{
std::wstring wfilename = a.get_filename();
std::string filename(wfilename.begin(), wfilename.end());
ofstream newfile(filename.c_str(), ios::out | ios::binary);
newfile << a;
}
}
//这里对邮件的详细信息进行读取。
void process_recipient(const pstsdk::recipient& r)
{
//CString fda=(CString)r.get_account_name().c_str();
//CString faw=(CString)r.get_address_type().c_str();
//CString lk=(CString)r.get_email_address().c_str();
//AfxMessageBox(fda);
//AfxMessageBox(faw);
//AfxMessageBox(lk);
RsTO=ws2s(r.get_name()).c_str();//这里获得收件人。
}
提供了这些信息应该可以完整的读取出pst文件里面邮件了
首发,转载标明出处。
彭颖森新浪博客首发:http://blog.sina.com.cn/scpys
Biseny@qq.com
)
转载请标明地址
微软公布了OUTLOOK 的数据文件PST的数据格式。
PSTSDK下载地址:http://pstsdk.codeplex.com/releases/view/48297
SDK还存在一些问题。所以不断更新中。
下载后我的编译环境:WIN7+VS2010+Boost库。还必须在Unicode环境下使用。试了多种环境竟然编译不了。没法。只有这种环境下才能通过。
写出来的dll要在安装了“vs2010运行库”的环境下面才能使用。
运行库下载地址:http://www.orsoon.com/Soft/9389.html (官网上有。吥过我没有找到!!)怕毒的还是去官网看下吧。
(我這裡還有個方法。可以不安裝運行庫也能使用生成的DLL)。。需要的聯繫我:Biseny@qq.com
首先新建项目。引用头文件
#include “pstsdk/pst/pst.h”
然后原形声明:
void process_pst(const pstsdk::pst& p);//这里接受PST数据文件
void process_folder(const pstsdk::folder& f)//这里遍历数据文件里面的第一层目录结构
void process_message(const pstsdk::message& m);//这里开始遍历目录里面的邮件。邮件内容都从这里读取出来。
void process_recipient(const pstsdk::recipient& r);//这里开始遍历邮件里面的详细信息。发件人。收件人都还有服务器配置都从这里读取出来。
void process_attachment(const pstsdk::attachment& a);//这里是读取每封邮件的里面的附件。
然后:
pst PinND(“这里写路径。”);
process_pst(PinND);
然后看下面:
void process_folder(const pstsdk::folder& f)
{
f.get_name().c_str();//获取PST里面装邮件的目录比如:收件箱,发件箱,已删除邮件。
f.get_message_count();//这里可以获得目录里面的邮件数量。方便遍历。
for_each(f.message_begin(),f.message_end(), process_message);//调用 process_message 方法 对邮件进行遍历。。
for_each(f.sub_folder_begin(), f.sub_folder_end(), process_folder);//这里用递归。循环读取目录。
}
void process_message(const pstsdk::message& m)
{
m.get_attachment_count();//这里可以获取。附件的数量。
m.size();//这里可以获得邮件大小。
m.get_subject();//这里可以获得邮件的标题。
m.get_body;//这里可以获得邮件的正文。
//这里获得邮件相信信息的数量然后进行遍历。
if(m.get_recipient_count() > 0)
{
for_each(m.recipient_begin(), m.recipient_end(), process_recipient);
}
//判断附件数并进行处理
if(m.get_attachment_count() > 0)
{
for_each(m.attachment_begin(), m.attachment_end(), process_attachment);
}
}
//这个方法提取出附件。
void process_attachment(const pstsdk::attachment& a)
{
a.get_filename().c_str();//附件名字。
if(a.is_message())
{
process_message(a.open_as_message());
}
else
{
std::wstring wfilename = a.get_filename();
std::string filename(wfilename.begin(), wfilename.end());
ofstream newfile(filename.c_str(), ios::out | ios::binary);
newfile << a;
}
}
//这里对邮件的详细信息进行读取。
void process_recipient(const pstsdk::recipient& r)
{
//CString fda=(CString)r.get_account_name().c_str();
//CString faw=(CString)r.get_address_type().c_str();
//CString lk=(CString)r.get_email_address().c_str();
//AfxMessageBox(fda);
//AfxMessageBox(faw);
//AfxMessageBox(lk);
RsTO=ws2s(r.get_name()).c_str();//这里获得收件人。
}
提供了这些信息应该可以完整的读取出pst文件里面邮件了
首发,转载标明出处。
彭颖森新浪博客首发:http://blog.sina.com.cn/scpys
相关文章推荐
- mt7620 有线连接
- 曾经的笔记迁移__结构体和typedef
- OC菜鸟成长记-OC中的日期和时间
- C#的try-catch-finally 中的catch语句的异常有顺序的区别
- JAVA序列化Serializable
- 华为OJ(字符统计)
- 百天实习记 ---2015南京南大富士通实习感想
- java中HashMap满了会怎样
- leetcode - Add Digits
- nodejs 获取文件的编码方式
- 获取app versionCode版本号
- 字符驱动练习
- java实现二叉树
- android adb 命令发送 keyevent
- 【译】Android LayerDrawable 和 Drawable.Callback
- 基于java的串口通讯(附带实例+说明文档+测试工具)
- github优秀开源项目大全-iOS
- hdu 4508 湫湫系列故事——减肥记I(完全背包)
- Hadoop YARN 框架 一
- 1到n中1出现的次数