ppc 程序,实现邮件收发及短信收发

这篇文章主要讲述:Microsoft.WindowsMobile.PocketOutlook命名空间下的五个类:
1.OutlookSession
2.AppointmentCollection, Appointment
3.ContactCollection, Contact
4.SmsMessage
5.EmailMessage

该命名空间主要针对PocketOutlook中的所提供的Appointment(约会), Task(计划), Contact(联系人), 短信, 邮件的操作。
注:在WM5.0系统中已提供该命名空间,即CF2.0下也提供支持。

下面就开始逐个介绍。首先运行下程序效果。


OutlookSession是取得PocketOutlook中的所有信息的一个对象, 该对象提供访问PocketOutlook对象模型的一个入口。通过该对象, 可以操作PocketOutlook所提供的所有操作。

当点击Appointments时, 取得已存在的Appoint, 并添加一个新的Appoint.
通过OutlookSession.Appointments.Item得到AppointmentCollection(所有集合). 该集合内存放所有Appointment.
这些Appointment按照时间的顺序排列. 当然, 你也可以指定按什么排序. 使用Sort方法, 并指定排序字段即可.
AppointmentCollectionAddNew方法:在集合对象中创建一个新Appointment, 并将该对象返回, 类似于DataRow.
返回新对象后, 对该对象的属性进行赋值后, 通过该对象的Update方法, 就能自动更新集合内信息.

代码如下:

 1            OutlookSession session = new  OutlookSession();
 2

 3            foreach (Appointment app in
 session.Appointments.Items)
 4            
{
 5                this.listBox1.Items.Add("ItemId: " +
 app.ItemId);
 6                this.listBox1.Items.Add("Subject: " +
 app.Subject);
 7                this.listBox1.Items.Add("AllDayEvent: " +
 app.AllDayEvent.ToString());
 8                this.listBox1.Items.Add("Body: " +
 app.Body);
 9                this.listBox1.Items.Add("BusyStatus: " +
 app.BusyStatus.ToString());
10                this.listBox1.Items.Add("Location: " +
 app.Location);
11                this.listBox1.Items.Add(""
);
12            }

13
14            Appointment appAdd =
 session.Appointments.Items.AddNew();
15            appAdd.Subject = "Add Now"
;
16            appAdd.Location = "Shanghai"
;
17            appAdd.Start = System.DateTime.Now.AddHours(1
);
18            appAdd.End = System.DateTime.Now.AddHours(2
);
19            appAdd.BusyStatus =
 BusyStatus.Busy;
20            appAdd.Update();

效果如下:

Appoint没有添加时的效果.

Appointment与 AppointmentCollection也有很多事件, 这里举一个 AppointmentCollectionListChanged事件.
AppointmentCollection集合中的任一Appoint发生变化(新增, 修改, 删除)时, 该事件即会被触发.
代码如下:
 1        void Items_ListChanged(object  sender, ListChangedEventArgs e)
 2        
{
 3            //this.listBox1.Items.Add("Type Name: " + sender.GetType().FullName);

 4            AppointmentCollection appCol = (AppointmentCollection)sender;
 5            if (e.ListChangedType ==
 ListChangedType.ItemChanged)
 6            
{
 7                this.listBox1.Items.Add("ItemId: " +
 appCol[e.NewIndex].ItemId);
 8                this.listBox1.Items.Add("Subject: " +
 appCol[e.NewIndex].Subject);
 9                this.listBox1.Items.Add("AllDayEvent: " +
 appCol[e.NewIndex].AllDayEvent.ToString());
10                this.listBox1.Items.Add("Body: " +
 appCol[e.NewIndex].Body);
11                this.listBox1.Items.Add("BusyStatus: " +
 appCol[e.NewIndex].BusyStatus.ToString());
12                this.listBox1.Items.Add("Location: " +
 appCol[e.NewIndex].Location);
13                this.listBox1.Items.Add(""
);
14            }

15        }

效果如下:

Subject为Add Now为添加的Appoint.

Contact对象, 通过OutlookSessionContacts.Items得到ContactCollection.
访问方法与Appoint一致.在此, 只演示代码.
 1        private void menuItem7_Click(object  sender, EventArgs e)
 2        
{
 3            OutlookSession session = new
 OutlookSession();
 4

 5            foreach (Contact contact in
 session.Contacts.Items)
 6            
{
 7                this.listBox1.Items.Add("File As: " +
 contact.FileAs);
 8                this.listBox1.Items.Add("Email1Address: " +
 contact.Email1Address);
 9                this.listBox1.Items.Add(""
);
10            }

11
12            Contact contactAdd =
 session.Contacts.Items.AddNew();
13            contactAdd.FileAs = "Test Man"
;
14            contactAdd.FirstName = "Test"
;
15            contactAdd.LastName = "Man"
;
16            contactAdd.Email1Address = "Test@abs.com"
;
17
            contactAdd.Update();
18        }

效果如下:


Task, TaskCollection:看过上述的Appoint与Contact后, 相信大家也一定能够使用Task的. 使用方式完全一致.
Appoint, Contact, Task. 在OutlookSession中唯一标识符为ItemId. 可以在集合中通过ItemId来取得你需要的某一个内容.
并且它们可以创建除ItemId以外, 内容完全一致的对象, 这是完全存在的.



SmsMessage:短信对象.可以在构造函数时传入要发送的号码及内容, 也可以在创建完对象后对其属性进行修改.
该对象提供Send方法, 用于发送短信. 当然, 也可以通过OutlookSession的SmsAccount.Send方法发送, 这都是一样的.
注:短信不支持彩信功能, 只能发送文字信息. 当程序自己发送消息完后, 发送的消息并不会出现在短信的已发送栏里.这和邮件发送不一致的地方, 需了解. 另外, 微软的IDE(VS2008)中存在一个BUG, 就是访问SmsMessage对象的Body时, 显示提示居然说是只读的, 但其实是读写都可以的.

应该改为Gets Or Sets the SMS message's text body.
代码如下:
 1        private void menuItem4_Click(object  sender, EventArgs e)
 2        
{
 3            SmsMessage smsMessage = new
 SmsMessage(strContract, strMessage);
 4            smsMessage.RequestDeliveryReport = false
;
 5            //smsMessage.Send();

 6
 7            OutlookSession session = new OutlookSession();
 8            this.listBox1.Items.Add("SmsAccount Name: " +
 session.SmsAccount.Name);
 9            //this.listBox1.Items.Add("ItemID: " + smsMessage.ItemId.ToString());

10            session.SmsAccount.Send(smsMessage);
11

12            SmsMessage sms = new
 SmsMessage();
13            sms.Body = "Test"
;
14            sms.To.Add(new
 Recipient(strContract));
15
            session.SmsAccount.Send(sms);
16        }
通过Call Emulator工具,取得短信.


EmailMessage:发送邮件对象.
如果没有设置好EmailAccounts, 是无法正常发送Email的.
代码如下:
 1        private void menuItem5_Click(object  sender, EventArgs e)
 2        
{
 3            EmailMessage mail = new
 EmailMessage();
 4            mail.To.Add(new Recipient("appleseeker@gmail.com"
));
 5            mail.Importance =
 Importance.High;
 6            mail.Subject = "It is test mail"
;
 7            mail.BodyText = "It is test mail"
;
 8            mail.Attachments.Add(new Attachment(@"\flower.jpg"
));
 9

10            OutlookSession session = new
 OutlookSession();
11            if (session.EmailAccounts.Count > 0
)
12                mail.Send(session.EmailAccounts[1
]);
13        }
OutlookSession.EmailAccount中, 我访问集合中第2个元素的理由:
因为当前是模拟器开发,所有该EmailAccounts中第1个元素是模拟器.只有后面的才是在模拟器上说设置的Mail帐户.
效果如下:

没有发送邮件时.

EmailMessage对象调用Send后,邮箱的邮件情况.

本文就PocketOutlook中的一些基本操作内容讲述完毕,改天会对如何操作 PocketOutlook.MessageInterception命名空间作一下讲述,该空间提供消息拦截,起到过滤效果.

代码下载:SmartDeviceOutlookDemo_2008_03_24.rar

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
NET compact FrameWork移动开发指南 * 书名:.NET compact FrameWork移动开发指南 * 作者:颜友宁 * 来源:清华大学出版社 * 出版时间:2006年11月 * ISBN:暂无 * 定价:63元 看 书 评 论 收 藏打 分 购 买 图书版权归出版社和作者所有,CSDN & DearBook独家提供试读和连载 内容介绍: 全书共6篇。第1篇主要介绍了Windows Mobile平台、.NET Compact Framework和开发工具Visual Studio 2005。第2篇主要介绍了在C/S架构的移动应用程序中,如何利用.NET Compact Framework进行GUI设计和客户端应用的编程。第3篇主要介绍了.NET全新的数据访问模型ADO.NET和XML处理技术。第4篇主要介绍了移动Web应用程序的开发以及移动智能设备所支持的网络技术。第5篇主要介绍了移动应用高级功能,如P/Invoke、POOM、资源与本地化、多线程编程、性能优化和移动安全策略等的开发。第6篇从实际... 目录 * 目录 序言 * 前言 第2章 .NET Compact Framework简介 * 2.1 概述 * 2.2 公共语言运行库 * 2.3 .NET Compact Framework类库 * 2.4 .NET Compact Framework不包括的功能 * 2.5 小结 第8章 自定义控件 * 8.1 概述 * 8.2 自定义控件类型与创建方式 * 8.3 复合控件 * 8.4 扩展控件 * 8.5 自绘控件 * 8.6 自定义组件 * 8.7 小结 第11章 图形 * 11.1 概述 * 11.2 基础知识 * 11.3 绘制图形 * 11.4 绘制字符串 * 11.5 绘制图像 * 11.6 绘制图形报表 * 11.7 小结 第15章 SQL Server 服务器数据访问 * 15.1 概述 * 15.2 如何访问SQL Server数据库 * 15.3 使用SqlConnection连接数据库 * 15.4 使用SqlCommand查询数据库 * 15.5 向SQL语句传递参数 * 15.6 ExecuteReader方法 * 15.7 重载ExecuteReader方法 * 15.8 使用存储过程 * 15.9 DataSet和DataAdapter组件 * 15.10 使用事务 * 15.11 SQL错误处理 * 15.12 小结 第16章 SQL Server CE本地数据访问 * 16.1 概述 * 16.2 数据库基本操作 * 16.3 远程数据访问 * 16.4 合并复制 * 16.5 冲突 * 16.6 数据同步设计策略 * 16.7 小结 第17章 XML编程 * 17.1 概述 * 17.2 XML基础 * 17.3 DOM编程 * 17.4 通过DataSet处理XML * 17.5 XML Schema * 17.6 XML序列化 * 17.7 使用XPath表达式 * 17.8 使用XML配置文件 * 17.9 小结 第18章 注册表编程 * 18.1 概述 * 18.2 Windows Mobile注册表 * 18.3 使用注册表 * 18.4 注册表应用实例 * 18.5 注册表安全 * 18.6 小结 第19章 移动Web开发 * 19.1 概述 * 19.2 移动Web网站 * 19.3 ASP.NET移动控件 * 19.4 移动Web窗体设计 * 19.5 自定义ASP.NET移动控件 * 19.6 移动Web应用的国际化 * 19.7 移动Web网站安全性 * 19.8 小结 第23章 使用POOM * 23.1 概述 * 23.2 Pocket Outlook对象模型 * 23.3 访问POOM * 23.4 使用任务对象 * 23.5 使用联系人对象 * 23.6 使用约会对象 * 23.7 小结 第24章 多线程编程 * 24.1 概述 * 24.2 Windows CE进程和线程 * 24.3 .NET Compact Framework线程 * 24.4 多线程程序设计 * 24.5 简单的多线程示例 * 24.6 改进多线程示例 * 24.7 线程池 * 24.8 Timer类 * 24.9 线程内访问界面控件 * 24.10 死锁风险 * 24.11 线程同步 * 24.12 小结

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值