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

设计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中。恭喜您成功了!
传苹果下一代Mac OS中将整合Siri及地图服务 TripAdvisor:使用AWS比服务器托管成本节省50% [MDCC精华]亚马逊AWS布道师Kingsley Wood:灵活IT架构之道 亚马逊诉讼彰显谷歌在公有云领域威慑力十足 AWS全球创业大赛 奖金100000美元 YY:破冰而出,成功上市 Xtreme Labs工程师:Android开发常陷入的五大深坑 Elon Musk:没了乔布斯的苹果干不过谷歌 旁门左道:第一次开发移动游戏就赚到28623美元 移动周报:小聪明赚大钱 游戏SEO如何耍鸡贼? 创翼全国 六城联动——2012移动互联网应用创新大赛开放日 全国六城联动沙龙 爱丽丝+福尔摩斯 Game Insight解谜游戏玩出新花样 Windows Phone 8 SDK大升级:部分功能兼容WP7 信息大图《愤怒的小鸟》发家史 Intel预测:10年之后你的手机是48核的 消息推送惹怒用户:应用开发者请别太过分 创新工场:我们如何孵化未来? iOS越狱比例下降:国内移动开发环境怎么了? 响应式图像技术与资源分享 看Twitter如何应对大选:少些Ruby 多些Java 软件开发中常见的十大系统瓶颈 [CTO俱乐部87期]三人行架构分享:开源是背后的支柱 推荐5款超实用的.NET性能分析工具 OpenStack基金会主席Alan Clark访华 欢迎提问 程序员的十大烦恼 兼顾性能和兼容体验:HTML5时代的浏览器全面测试 Lisp的本质 Amazon工作环境恶劣员工高流失率 为何却依然能持续成功和创新? 对几个软件开发传统观点的质疑和反驳 [实战分析] 编写高效的JavaScript程序 Twitter的系统编程 如何根据Task ID或Process ID得到hwnd 如何让程序启动时自动hide()阿! 问一个最大化窗体与任务栏的关系的问题 把一表中一字段(字符型)以一條記錄返回出來. Rational Rose 中没有Delphi方面得模块,哪儿有与Delphi接口下载 谁有ActiveReport 2的中文例子和原程?在线等待!急急急! 大家来讨论一下,《设计模式》应该怎么看!! 关于打印的问题,高手关注! datagrid如何实现分页,。net菜鸟 声音问题 access数据库加密后,如何再用ADO与之连接? 有谁用过ms Agent? 很菜的问题! delphi里的widestring类型对应着BCB里的什么类型啊 开了一个socket,acept后如何给ie发一个字符串显示出来? access数据库加密后,如何再用ADO与之连接? 如何查询出所有用户表名 PWS中的一个小问题 请问DataSet里的Relations和Constraints有什么区别? 想了三天,还是做不出 请问如何创建一个大于屏幕分辨率的窗口? 公开putao的最大秘密,他女友的隐私! 关于不同版本的用户对象的问题!(online) 在批处理中设置路径,有空格系统不认怎么办? 为了忘却的纪念(今天是咱们的国耻日) 关于JSP菜单实现的问题? 如何判断数组是否被赋值? 用MSCHART的二维折线图如何实现左右坐标分别标识不同的曲线? 请问招行的网上银行的在网上点击安装是怎么实现的呀? 100分只是开始。。。 如果回答继续加!! 一个template问题,想不出办法,高手请进 送分题:如何改变dll的调试可执行文件? 大家看看代码 真搞不懂为什么出错??? 如何在表单中设置包含字段http://schemas.microsoft.com/cdo/workflow/response 如何使用VBSCRIPT读取本页文本框中的数据, (不能用表单提交和JAVASCRIPT 能不能?) 我在桌面上执行一个应用程序,运行正常,但用pb中调用run("***.exe")运行是出错,提示是少了某些dll文件 我怎么才能使客户端发过来的经UF8编码的中文URL,还原成GD312,能找到页面? 我用openwithparm(w_1,arg),arg明明传递的是LONG型的数据,为什么用message.longparm接收到的是0,而一定要用message.doubleparm才能正确 问一个sql语句如何写,简单! 征集能够同时输出文本和图形的控件! 急寻bmp转gif的代码 封装在Dll中的窗口焦点问题 为什么我用JBUILDER编译JSP文件,用web run执行后会出现这些情况?? 有谁用过CMPPE2.0协议开发过网关程序的请进 win2000下内存使用的问题? 我每次都结贴子的,不信你们查一下啊,这次再请帮忙,谢谢哦 在公共文件夹如公告窗体的原件与回复件是如何关联的? delphi中form中放了一副图,怎样让图可见而form不可见? 一个关于vba的应用问题?合并文档 英文版的vb中该如何来把一个项目进行打包呢(想把它安装到一台没有装vb 的电脑上) 删除多余的重复记录 六年级作文《记一节有趣的课》一定要新颖 字数不要太多 也不能太少 急用 三天内请广大朋友尽快回复 赵亮赵亮赵亮赵亮赵亮赵亮赵亮,整死你,还得本小姐回家挨骂了,小亮亮~下次来师大玩死你! 我的爸爸作文 怎样写只要说出第一自然段写什么好,怎样开头,然后第二自然段怎样写,一直接下去说.(写好加分)其实不用写这么多,比如:开头写样子,第二自然段写什么,第三自然段写 平面镜与水平面成45度角,在镜前有一发光点在水平向右匀速运动,则他的象运动方向如何,画平面镜与水平面成45度角,在镜前有一发光点在水平向右匀速运动,则他的象运动方向如何,画图说明( 一个花坛的半径是8米,在他的周围有一条宽2米的环形小路,小路的面积是多少平方米 作文开头 “我的父亲……” 这是第几人称? 一平面镜与水平面成45度角固定在水平桌面上,一小球以1m / s 的速度沿桌面面镜匀速滚去则小球在平面镜中的像 ( )A.以1m / s 做竖直向上的运动 B.以1m / s 做竖直向下的运动 C.以2m / s 做竖直 中国传统文化概论.救命啊练习题3一、填空题1、_______是中国史学的奠基时期._______是我国史学的确立时期._______是我国古代史学的繁荣时期._______是我国史学的嬗变时期.2、_______和_______中的 孔子弟子及其再传弟子所编篡的儒家经典著作是哪一部? 廉政作文500字怎么写? 我的父亲作文,结尾 孔子著作的儒家的经典著作《 》虽然只短短五千字,却流芳百世 关于校园一角的作文 我的爸爸作文结尾简短一点 《论语》是儒家学派经典著作之一,内容记录孔子及其门徒的( ),与( ),( ),( )合称‘四书’ 《中国传统文化概论》作业:谈一下对中国传统文化的认识比如谈下对具体的典籍的某本书或某一方面问题的认识.注意引用文献,不少于800字. 四年级的作文:我和_____(350字左右) 《论语》这本书是儒家的经典著作,从语录中看,孔子认为学习的快乐在于?各位大侠们帮帮我吧! 廉洁走进校园"作文,800字左右 帮我写一篇关于廉洁修身的征文,700字左右 小明要做一个对角线互相垂直的等腰梯形形状的风筝,其面积为2450平方厘米,则它的对角线的长为多少? 下图是使用1:500比例尺绘制的一块三角形的学校花园平面图,请你量出数据,在计算出这块地的实际面积4cm,底3cm.老师算50平方米 用一块面积为450cm^2的等腰梯形彩纸做风筝,为了牢固起见,用……用一块面积为450cm^2的等腰梯形彩纸做风筝,为了牢固起见,用竹条做梯形的对角线,对角线恰好互相垂直,那么至少需要竹条______cm 【要解题过程】一个对角线互相垂直的等腰梯形形状的风筝,其面积为2450平方厘米,则它的对角线的长答案这个方程:2450=a×a/2 a=70怎么算的啊? 下图是用1:4000的比例尺画出的一块稻田平面图.它的实际面积是多少平方米?上底8 高6 下底15 单位cm是个梯形 一束光线与水平面成30°角向下照射时,想让光线经平面镜反射后沿水平方向射出,则入射角可能是( ) A.15° B.45° C.75°D.A.B.C三者都有可能 (要说明理由,为什么选这个答案.谢谢了.) 和父母写信交流600字作文 怎样校园里写的芒果树的作文 作文:爸爸我想对你说开头和结尾 孔子为什么创建儒学 要有哲理性 多一点 越多越好 有关借物喻人 芒果树旳作文借物喻人 芒果树 作文 一束光线与水平面成30度从右上方向左下方射入.通过一平面镜的反射,要使光线水平向右射出则平面镜与水平面的夹角为( )要使光线向右射出,则平面镜与水平面的夹角为( ) 孔子在哪里创立儒家学派在什么地方 中国传统文化概论急求以下简答题答案:1.地理、气候环境对中国传统文化的影响有哪些?2.古代社会政治环境对中国传统文化的影响有哪些?3.中国传统文化的主要特点是什么?4.简述儒家的人 爸爸给我的爱...这篇作文的开头和结尾...要靠谱,谢啦... 为什么孔子创立的学派被称为儒家? 芒果树和芒果树的种植请问江西的南昌能种植芒果树和芒果树吗?有什么要注意的?现在种能成活么? 一束光线与水平面成30度夹角,要使反射光线沿水平方向传播,那么平面镜与水平方向所成的夹角为多大?平面镜作在哪? 孔子是在什么时期创建儒家学派的?急! 一次有趣的课 作文要新颖点的材料 不许抄袭 以廉洁在我心写一篇800字以上的作文不要初中生的作文,我读大一的,不要抄袭的,只有二十分,拜托帮我下,尽快啊,过几天就要教了 在课外活动课上,老师让同学们做一个对角线互相垂直且相等的四边形形状的风筝,其面积为450cm²,问 对所用的竹条至少需要多长?(还没学梯形) 一束平行光线与水平面成20度角射向地面,现用平面镜使反射光线平面射出,则镜面与水平方向成的夹角要有图形的 花园长200m,在平面图用4cm长的线段来表示,这幅图的比例尺是( 描写爸爸外貌的作文需要两句描写句,最好再另付10句描写,多一句加一分. 一束平行光线与水平面成20度角射向地面,现用平面镜使反射光线进入一竖井中,镜面与水平方向成的角应是多少?备选答案有:30度 35度 45度 55度 关于文化传统与教育哲学的论文我现在上的课是 文化传统与教育哲学 老师留了作业就是以“文化传统与教育哲学”为话题写2000字的论文 没了`~ 在课外活动课上,老师让同学们做一个对角线互相垂直的等腰梯形形状的风筝,其面积是450平方厘米问:对角线所用的竹条至少需多少厘米 物理题当入射光线与平面镜夹角为20度,若保持入射光线方向不变,转动平面镜,使入射光与平面镜夹角为50度当入射光线与平面镜夹角为20度,若保持入射光线方向不变,转动平面镜,使入射光与平 今天下午,李明和赵亮争夺冠亚军.修改病句 答滴好再加悬赏 孔子的思想为什么叫儒学 求一个代表廉洁自立的短文,500字左右 赵亮和王军两人同时从甲村出发去乙村,赵亮的速度为每小时9千米,王军的速度为每小时15千米,王军因有事在途中停留了1.5小时 ,因此比赵亮迟到0.5小时,求甲乙两村的距离,若设甲乙两村的距离 孔子为什么建立儒家 廉洁书信进家庭500字作文高手来 在一幅公园的平面图上,用10厘米的距离表示实际100米的距离.求这幅平面图的比例尺拜托各位了 3Q 孔子的儒学为何称儒 一节有趣的作文课作文 赵亮比弟弟大3岁,而赵亮的弟弟是5月出生的.他的年龄的2倍加上9.正好是出生那个月的总天数,求赵亮弟弟的年龄?方程,步骤及结果,thanks! 关于廉政的作文450字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘