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

设计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中。恭喜您成功了!
Robert Scoble:戴Google Glass两周后 再也不想摘下它 赶时髦?Facebook CEO 2013年将领取1美元年薪 蓝港在线CEO王峰:我在网络游戏行业十年从业记 CMDN Club 27期:从儿童音乐教育到移动碎片化管理 聚焦全球移动市场——你所不知道的俄罗斯 MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍 PC衰落 Intel转投Google挖掘移动市场潜力 移动周报:500元体感、精确到0.01毫米的Leap Motion TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi “BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 别再设计易碎的Web API! LinkedIn:55人支持2700位员工,2亿用户的大数据分析 Brian Krzanich是谁?这位新CEO预示英特尔未来怎样? HTML5开发者心声:浏览器兼容性成最大问题 传微软6月下旬将发布第二代Surface 7到9英寸全有 Turbulenz:HTML5 2D和3D游戏引擎开源 携程开放平台总经理夏天:内容+高转化率成就开发者 直接拿来用!最火的Android开源项目(一) Qunar 谌振宇:旅游行业的移动化如何布局? 大数据分析“铁三角”: Teradata数据仓库、Teradata Aster与Hadoop Teradata专业服务:打造行业企业的“数据科学家” Xamarin Evolve 2013:竭尽全力让C#服务iOS与Android 史上最全!57个Web框架4轮横向对比 回顾银行数据的可用性和一致性历史 基础问题 全文检索不能检索中文问题 谁有标准C函数库? 高分求救:关于crystal 连接oracle,不能运行 A调用B,怎样能够获得A所在的线程? frReport出错,解决即给分。 谁有标准C函数库? WIN2000和WINXP关于网上邻居的问题 如何将判断一个graphi字段里是否有内容,如果有,就删除!! 请问深圳市区内哪里较全面的计算机类的书店? javac不能编译Servlet,请问在Tomcat 下还有别的方法吗? 很有意义的问题!! [[[[[[[[[推举几个SEX站点.给欧研究研究.]]]]]]]] 怎么实现!? 字段长度int(2) 这个2到底是什么意思? 那里有Microsoft DirectX SDK FOR DELPHI的下载 学生管理系统登录问题(ADO数据库的问题) *.dat文件用什么软件打开!! 哪有jsp写的论坛源程序 大家给个思路了!!! 如何传递两个参数!在线等! 小弟在开发一个软件时踫到了许多问题,想请各位大侠帮助!! 请问:如何从VARIANT类型的数组中取数据? TOMCAT+SQLSERVER连接池配置问题~高分请教 这个问题让我有点晕!——安装与部署项目! 空调有坏了!!!! 安装论坛过程中遇到的问题!!!!!! 关于使用TC35Modem发送短信的问题,用超级终端可以,用N多个程序连接端口都不行。 "native code outside the VM"是什么错误呀 win2000 VPN方式的网络的实现。 datagrid控件的数据绑定问题. 请高手教我如何搭redflag linux下JAVA开发环境,急,另给分 如何删除一个字符串的前10个字符? 资料档案库是用来干嘛的? 用EJB做后台的参数传递。高分请教! 在ASP中对数据库操作是否可以用事务提交啊? TOMCAT+SQLSERVER连接池配置问题~~高分请教~ 请教!!!如何在IntraWeb控制IE? 如何远程对局域网内的某一台计算机(假设其计算机名为comm1)实施关机操作? 为什么连不上CVS服务器? 如何用ASP读取XML中节点的属性值? 如何使用jspsmartupload 一个简单问题请进来look一下 我所知道的论坛常用语,自己以为算得上的可以往上加啊! 如何自画窗体或者PANEL,让小图象在上面排列,然后再根据顺序,一次改变小图象呢? asp.net 上传图片问题? xml中怎么取得这个值呀? 请大家给介绍一本学VC++.NET的书!谢谢 有谁用过solpartwebcontrols.dll控件来建立菜单的,请进! pcanywhere联机方式 草船借箭以周瑜叹服诸葛亮的话做结尾,这样不但————,使文章结构—————,而且反衬出-----,使诸葛亮的形象更加——————.555555555555555跪求..快,快 孔隙分布是用二次电子还是背散射? 扫描电镜背散射电子产额受什么影响 氢气为何不能发生闪燃 柴油达到闪燃时的浓度是多少? 作文想写周瑜,可以从哪些方面,有什么素材可以写呢? 请填主角四面楚歌()煮豆燃萁()指鹿为马()入木三分()纸上谈兵()卧薪尝胆()破釜沉舟()闻鸡起舞()负荆请罪()完璧归赵()三顾茅庐()背水一战()鞠躬尽瘁() 求解导数xy-xe^y^2-x=-2设xy-xe^y^2-x=-2,则当x=1,y=0时,dx/dy=?注;e^y^2是e的(y平方)次方 一立方一氧化碳等于多少公斤?谢谢 a=3,|b|=10,且|b-a|=-(b-a),求a-b的值 课文草船借箭以周瑜的叹服结尾,反衬了什么 港媒:中央楼市思路初显 透露多点政策日本麦当劳就“禁流浪汉入店”道歉外交部就打击恐怖主义、叙利亚销毁化武世界主要城市11月2日天气预报英内政部报告称非法移民给英国带来沉重外交部:对目前阶段有关销毁叙化武决定律师称斯诺登可在俄境内就德国遭美监听报道称美通过澳驻华使馆监听中国 中方“免费”医疗让俄罗斯进退两难俄按揭购房方式未成功普及 专家称与银旧金山地方检察院举行反家暴妇女维权座人民币将“谋杀”石油美元,然而真的是朝鲜氢弹试验成功了吗?美国白宫:初步我省发放首张新版“SC”食品生产许可鹿晗也栽在了蜡像上!为什么中国明星的恒大小将身披10号刘芸:最难忘和女同学一起洗澡水路改造 重新贴墙地砖这些都需要重做女星颜值速报|眉庄你胖了,秦岚你僵了辖区居民眼中的守护神羽绒服、保暖内衣、羊绒衫买起来降温了一揽客出租车被扣一“客托”面临处罚
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘