说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

设计E-mail程序 -VB资料

HTML文档下载 WORD文档下载 PDF文档下载
设计E-mail程序 -VB资料
作者:广东省邮电管理局 张冠军

用Visual Basic 5.0设计E-mail程序

前言

  随着计算机网络的发展,人与人之间信息传输的时间大为缩短。许多文件都是以电子邮件的形式来传送;通常使用过计算机的人,或多或少都会用到E-Mail来传输信息。本文将介绍如何用Microsoft MAPI (Messaging Application Program Interface)来设计Mail程序。首先用Visual Basic所提供的MAPISession control及MAPIMessage control 来设计Mail收发程序,然后用Microsoft Internet Explorer 3.0所提供的E-Mail程序来测试程序设计的正确性。

MAPI简介
  MAPI接口是由微软公司提供的一系列供使用者开发Mail、Scheduling、bulletin board、communication程序的编程接口。在使用MAPI设计程序时,首先必须在程序和MAPI之间建立一条或数条Session;当Session建立好之后,Client端程序就可以使用MAPI所提供的功能。
  MAPI的功能主要分成三大部分:Address Books、Transport和Message Store。Address Books主要负责设置E-mail type、protocol等参数;Transport负责文件的发送和接收等功能;Message Store则负责发送接收等信息的处理。
  说了这么多,MAPI接口好像很可怕。不过没关系,Visual Basic所提供的MAPISession control及MAPIMessage control,已经将许多复杂的部分包装成简单的property和功能,我们只需要对property及功能作一些简单的设置,就可以写一个mail发送和接收的程序。

  以下笔者将用Visual Basic的MAPI control,来设计mail传送和接收的程序。

E-mail发送部分

Step 1:设置Exchange各项参数
  进入Exchange系统,选择新增设置文件;屏幕上会显示所需要的信息服务,选择Internet Mail。
  将设置文件的名称设为test。屏幕会显示两个选项,您可以选择以modem方式,或以network 方式连接。笔者所用的是Internet专线,所以选择network;假若您是使用PPP拨号方式连接Internet,就要选择modem。
  选择network后,Exchange会要求我们输入mail server的IP address。笔者现在所使用的 Mail server地址是202.96.128.111,在本程序中便将它设置为该地址。
  接着将Transform message的模式设置为automatic,这样当我们连接到Mail server时,新的信息会自动download到local端。
  接下来,将您所使用的Email address、full name、password、download path一步一步设置好,这样就完成了Exchange各项参数的设置。

Step 2:程序设计
  在File选项中选择New Project建立一个新的工程,这时屏幕上会看到许多选项,例如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等...,这时要选Standard.EXE。
  在Project下,选择Property属性选项;在general选项下,将Project Name改为email-send, 并将Form名称及Caption更改为email-send。
  在屏幕的Form上加入一个MAPImessage control,取名为MAPIm1;加入一个MAPIsession control,取名为MAPIs1;加入三个textbox control,取名为subject、content、addr。并在三个textbox前各加入一个Label,将Caption分别改为subject、content、addr。

  为方便读者了解彼此关系,以下表解释一遍:
(TextBox)
Name
-----------------------------------------------
subject(输入信件标题)
content(输入信件内容)
addr(输入信件要传送的位址)

(Label)
Caption
-----------------------------------------------
subject(输入信件标题提示)
content(输入信件内容提示)
addr(输入信件要传送的位址提示)

将MAPIm1的各项property设置如下:
download mail=TRUE
logoUI= TRUE
newsession=FALSE
username="test"

  这里将download mail设置为TRUE,当程序和mail server第一次连接时,会将新的mail download到local端。将logoUI设置为TRUE,则当您程序中logon名称输入错误时,系统会显示一个Message Box来让您输入正确的名称。由于这个程序仅使用到一条session,我们将它的值设置成FALSE。当然啦!如果您有许多session要建立的话,也可以将它设置成TRUE。 username中所填的,是我们在Exchange中所新增的设置文件名称;如果没有填内容的话,系统将会显示一些message box请您输入文件。

  在屏幕的Form上加入三个Button control,logon、logoff与send,分别将Caption改为log on、log off、send。

(Button)
Name          Caption
--------------------------------------------------------
logon(执行登入命令)   logon
logoff(执行登出命令)   logoff
send(执行传出信件命令)  send

  在 logon_Click()中加入以下程序代码,这个动作是使我们登录到mail server。
MAPIS1.SignOn
MAPIM1.SessionID = MS1.SessionID
MsgBox "your id is" + Str(MS1.SessionID)

  MS1.SignOn是作登录的动作。在登录时,因为已经将MAPIm1 control的download mail属性设置为TRUE,所以可以在屏幕上看到message box显示系统正在download mail。登录成功后,系统会传回一个sessionID,将该ID填入MAPIM1的SessionID中,这样就可以利用这条session来传送E-mail。

  在 logoff_Click()中加入以下程序代码,这个动作是使我们离开mail server。
MAPIS1.SignOff

  在 send_Click()中加入以下程序代码,这个动作是使我们发送email。
MAPIM1.Compose
MAPIM1.RecipDisplayName = addr.text
MAPIM1.AddressResolveUI = True
MAPIM1.MsgSubject = subject.text
MAPIM1.MsgNoteText = content.text
MAPIM1.Send
MsgBox "you successful"
  Compose命令的主要目的,是使您可以改变RecipDisplayName的内容,将所需传送的E-mail地址、主题、文章内容分别填入RecipDisplayName、MsgSubject、MsgNoteText,接着用send命令发送。

Step 3:用IE 3.0 Mail程序测试程序
  执行上面设计的email-send程序。在subject textbox中填入"发信测试",在address textbox中填入gzsydici@public1.guangzhou.gd.cn,在content textbox中输入要传送的内容:"大家好!这是发信测试",接着按传送。这样信件就发送出去了!
  执行IE 3.0选择接收信件,在mail选项中选择read mail。我们会在inbox中看到一封标题为"发信测试"的信件,接着我们看看它的内容,没错!那就是我们刚寄出的测试信。

E-mail接收部分

Step 1:程序设计
  在File选项中选择New Project建立一个新的工程。在屏幕上看到许多选项,如ActiveX Document.EXE、ActiveX Document.DLL、ActiveX.EXE、ActiveX Control等,这时要选Standard.EXE。
  接着在Project下,选择Property属性选项;在general选项下,将Project Name改为email-get,并将FORM名称及Caption更改为 email-get。
  在屏幕的Form上加入一个MAPImessage control,取名为MAPIm1;加入一个MAPIsession control,取名为MAPIs1;加入三个Textbox control,分别取名为subject、content、indexno, 将其Caption改为mail-subject、mail-content、indexno;并在TextBox前各加入一个Label control,将Caption分别改为subject、content、indexno。

  将MAPIm1的各项property设置如下:
download mail=TRUE
logoUI=TRUE
newsession=FALSE
username="test"

  这些设置原理如同设计发送mail程序部分。接着,在屏幕的Form上加入一个Button control get-mail,将Caption改为get mail。如同发送mail 程序部分和mail server建立一条session。

  在 get-mail_Click() 中加入以下程序代码,这个动作是使我们接收email。
MAPIM1.Fetch
Form1.Caption=MAPIM1. MsgCount
MAPIM1.MsgIndex=CINT(indexno.text)
subjec.Text = MM1.MsgNoteText
content.Text = MAPI1.MsgSubject
  Fetch命令,是将信件抓到系统存贮器的inbuffer中。我们将信件抓回来后,可以由MsgCount property知道信件数量。接着可以用MsgIndex设置要看哪一封信件的内容、标题。

Stept 2:测试mail接收程序
  首先用任何一种mail程序,任意书写几封信到mail server。在Form1的Caption中,我们会看到所接收的信件的数量。执行上面设计的email-get程序,在indexno textbox中填入1。接着按get mail Button,这样信件内容及标题就会显示在content、subject两个TextBox中。恭喜您成功了!
wrap(html) -JQuery API add(elements) -JQuery API add(html)-JQuery API add(expr) -JQuery API children(expr) -JQuery API contains(str) -JQuery API end() -JQuery API filter(filter) -JQuery API filter(expression) -JQuery API find(expr) -JQuery API is(expr) -JQuery API next(expr)-JQuery API not(elems)-JQuery API not(expr)-JQuery API not(el)-JQuery API parent(expr)-JQuery API parents(expr)-JQuery API prev(expr)-JQuery API siblings(expr)-JQuery API Events事件-JQuery API bind(type,data,fn)-JQuery API blur(fn) -JQuery API blur() -JQuery API change(fn) -JQuery API click(fn)-JQuery API click()-JQuery API dblclick(fn) -JQuery API error(fn) -JQuery API focus(fn)-JQuery API focus() -JQuery API hover(over,out)-JQuery API 如何实现5M以上的文件的上传 从windows进入unix Oracle 中文输入 是否onkeypress和onkeydown不能同时使用呀? Delphi 5下要做一个多 Y 轴的曲线图形,如何实现? 哪有xteamlindows下载?? 万分感谢!!!!! borland 会不会出一个 C# Builder? 乱码,头大了,不知道为什么pb导入excel怎么办 数据统计问题,请大侠门帮忙!急急急!!! 求解ZModem通讯协议源程序----有谁用过CZModemCore 我也不知道对不对! 最高级的问题?搞一个专业的VC程序员基地~~~~~~ 在研究directshow filter的push模式的兄弟请进 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了 有两个问题,每题40分,马上给分!!!! 如何使用打印机? 在爱情方面谁能做到这一点? 谁有 file cutter v1.4的注册码? 有急用! 搞一个专业的VC程序员基地~~~~~~谁愿意加入????? 最新发现:原来C++Bilder的项目文件(.bpr)是XML格式的! 关于FAT32和NTSF的问题 如何用VC实现Email的发送? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了! 搞一个专业的VC程序员基地~~~~~~需要网页制作高手!! ADO 的用法 m_pRecordset->Fields->GetItem(index)->GetName() 关于CRichEditCtrl的问题之二,取的当前可见行数? 请问在哪里下载IMAIL SERVER???各位帮帮忙!!! 高手请回答,ADO和BDE到底有什么区别,你选择谁?为什么? 高分求教!!!!!!!!!!!!!!!!怎样得到局域网上所有的机器名?(普通WINDOWS网络,用VB?,好象用WNET API可以的) 如何安装com.ibm.bridge2java.*这个包阿? 有人吗???求救! 你也许也会遇到这样的问题? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题!!! 大虾看过来. 一个access表一万条记录,想转到Mysql下(Mysql在Linux下)用什么方法和什么语言来做好? rs.CursorLocation=aduseclient是什么东西? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题! 简单SQL,免费送分! 用ASP如何上传文件,可以用组件。 谁知道怎么改运行中的程序的托盘图标???我用SysTray.ocx不能改? 新手提问,简单题目,大量给分~~~~~~~~~~ 如何使用getdispatch(), 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题!! 关于在一个窗口中的多个数据窗口的问题 扔块砖头, 开个场子 。 ( yeti_lee ) 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了? To: baicolt(五岁的小新是我师傅) 有没有人用过Jcreator 如何在sql server 的查询分析器中用sql语句转到另一台机器上的数据库,同样了sql server的 是不是MSHFlexGrid的bug? 李叔叔家种粮食作物8分之3公顷,种油料作物0.21公顷,种经济作物5分之1公顷.哪种面积大 一张地图的比例尺1比200表示图上的什么表示实际距离的 6吨等于多少克 某县耕地面积约80万公顷,2005年粮食作物与经济作物的面积比是7:3,到今年将调整为6 :4哪一种作物的生产规模扩大了,扩大了多少万公顷.请回答完整要算式并解答 一幅地图的比例尺是200:1,图上120厘米表示实际距离是()米一幅地图的比例尺是200:1,图上120厘米表示实际距离是( )米 一根绳子第一次用了全长的1/4,又用了5/2米,这时已用的/剩下的=2/3,绳子长多少米 5π等于多少 华北平原种植的粮食作物以什么为主 一根绳子第一次用去全长的1/5,第2次用去3/5米,两次共用去这根绳子的1/2.这根绳子长多少米? 5+5等于多少 华北平原的主要粮食作物是什么?1.水稻 2.大豆 3.高粱 4.小麦 上海到杭州的实际距离大约是150千米,在一副比例尺是1:3000000的地图上,两地之间的距离是多少厘米?随便帮我把答案算出 若大气压为1.01*10的5次要方Pa,水平屋顶面积为100平方米,则大气压对水平屋顶上表面压力为多少N 华北平原的主要粮食作物是? 在一幅比例尺为1:3000000的地图上量得上海到杭州的距离为5cm,把它改画在比例尺为1:5000000的地图上,上海到杭州的图上距离是多少厘米?(如果不会,不妨用方程试试!) 大气压多少Pa 你知道华北平原的人们种植的主要农作物有哪些?你的判断依据是什么? 在一幅比例尺是1比5000000的地图上,量的上海到杭州的距离是3.4厘米.上海到杭州的实际距离是多少? 一根绳子减去20%后又接上5米,比原来断20分之3,则现在绳子多少米 4*7等于多少? 在一幅比例尺是1:5000000的地图上,量得上海到杭州的距离是3.4cm.上海到杭州的实际距离是多少 等于几? 请问1mbar等于多少kpa 在一幅比例尺为1:3000000的地图上量得上海到杭州的距离为5cm,把它改画在比例尺为1:500000的地图上 总压为1个大气压的体系,含50%氧气和50%氮气.问氧气的压强为多少? 200磅等于多少KPA 700米 800米等于多少吨? 当氮气大量增加会改变空气吗?会影响大气压吗?吃的面包包装是那种充气式的,一撕开袋子气体唰得一下全跑了出来,袋子就变瘪了.上网查了一下,像薯片、面包这种充气式包装充的一般是氮气. 100升等于几千克 15米长的绳子,用去五分之二,还剩()米?一根绳子,用去五分之三米,还剩12米,这个绳子()米?一根绳子,用去四分之三,正好用去15米,还剩()米? 6升150兆帕的氮气等于多少大气压 5060克等于几千克几克 在一幅比例尺是1:8000000的地图上.量得A、B两地之间的距离是3厘米.A、B两地间的实际距离是().A.80千米 B.2400千米 C.240千米 容积为20升的钢瓶中,装有150个大气压的氧气,现将氧气在等温条件下分装到容积为5L的氧气袋中,氧气袋原来是真空的,要求每袋氧气均达到10个大气压,设分装时无漏气,则最多可装几袋 压强1Pa等于多少克的压力 一幅地图上的比例尺是1:2000000,把它改写成线段比例尺是( ),在这幅地图上量得A、B两地的距离是15厘米一幅地图上的比例尺是1:2000000,把它改写成线段比例尺是( ),在这幅地图 如果空气中的氧气都没了那么大气压是多少为什么? 1200克等于几千克几克 一根绳子,先用去40米,有用去余下长度的五分之二,这时余下的绳子正好是原来总长度的三分之一.这根绳子原来长多少米?(不要用两边都有X的方程) 有2根绳子共长63米,减去第一根的3/5和第二根的7/9,还余下共22米,第一根长多少米? 在一幅比例尺是1:200000的地图上,量得甲、乙两地距离20厘米.如果在另一幅地图上,甲、乙两地距离8厘米.另一幅地图的比例尺是多少 在比例尺是1:3000000的地图上,量得两地的距离是6cm.甲、两辆汽车同时相向开出,4小时后相遇.已知甲、乙两车的速度比为4:5,求甲、乙两车每小时各行多少千米? 一幅地图的比例尺是1:30000,说明图上距离是实际距离的什么,实际距离是图上距离 什么倍,图上1cm的距离表示实际距离( )m. 许伯伯承包了2公顷土地,他把其中一半用来种植棉花,棉花的种植面积是多少平方米?还有一道:一个储水器中装有2m³纯净水,如果把这些水分撞到容积为10升的水桶中,可以装多少桶? 在一幅地图上,比例尺为1:300000,量得A、B两地的距离为18厘米,则A、B两地的实际距离()千米 如图是红星农场农作物种植面积的统计图,回答下列问题:(1)若已知有250公顷土地种植蔬菜和棉花,则小麦有多少公顷?(2)若已知种植小麦的面积比种植蔬菜的面积多120公顷,则种植总面积 下面是某农场各种农作物种植面积的统计图,看图回答问题:己知粮食作物比经济作物多312公顷,这个农场一共有耕地多少公顷?三种作物各种植多少公顷?(粮食占总数的60%,其他作物占6%,经济 许伯伯承包2公顷土地,他把其中一半用来种棉花,棉花的种植面积是多少平方米? 下面是城东村今年各种农作物计划种植面积统计图.己知粮食作物的种植面积是175公顷,蔬菜种植面积是多少公顷?(粮食作物25% 蔬菜30% 其他45%) 一根绳子,第一次用去全长的15%,第一次用去全长的25%,还剩下8.4米.这根绳子原来长多少米?判断,打√,×.1、女生和男生人数的比是4:5,女生人数比男生少25%.( ) 2、甲数是乙数的2倍,那么甲 一根绳子长60米,第一次用去1/3,第二次用去1/4米,还剩()米 要过程 在比例尺为1:30000的地图上,实际距离是15千米,在图上应画多少厘米? 1pa等于多少公斤 一根绳子长100分米第一次用去3分米;第二次用去40分米;还剩多少米 某地的大气压为1.0*10^5Pa,这个大气压可以支持多高的水柱?要写出计算过程``! 1pa等于多少牛每平方米 一条绳子长15分米,第一次减去他的1/3,第二次减去它的1/2,还剩多少米 大气压在哪里为0 1pa等于多少每平方厘米多少克 7磅 多少克
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn