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

设计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中。恭喜您成功了!
专访腾讯反病毒实验室:揭秘TAV引擎,哈勃分析系统两大利器 Cocos Studio v2.0 Beta0正式发布!多维升级,合三为一 环信即时通讯云获3000万融资 用于研发运维 苹果谷歌都无力?前员工开发跨设备无缝同步应用 带你看会带你飞!MDCC 2014移动开发者大会参会指南 Meteor 1.0发布 构建更好的Web应用 【专访】敏捷专家吴穹:敏捷测试的行业应用与实战解析 英特尔中国研究院最新成果亮相 展示智能衣服瓷杯机器人等创新作品 Node.js 打造实时多人游戏框架 深圳微信开发者大会购票企业特征分析 上门汽车服务“e保养”完成A轮500万美元融资 Docker之父Solomon Hykes谈项目开发的初衷和挑战 浪潮是如何实现单日5000台x86服务器交付互联网的? Bootstrap 3.3.0发布 版本4不再支持IE8 漏洞预警:FTP曝严重远程执行漏洞 影响多个版本Unix 【简讯】W3C小组宣布HTML5标准制定完成 AMD发布GPUPerfAPI 2.14,GPU性能检测更Easy! 开放能力升级——微信公众号登陆授权开启公测! 百度最“智能”的新型推荐技术——智能因子分解机 消灭Bug!18款最佳的问题跟踪管理应用程序 Google Analytics为什么会这么快 【MDCC 2014】Xamarin深入体验营——开发实战大揭秘 【MDCC 2014】电信技术专场:运营商与开发者如何合作共赢 【MDCC 2014】高德LBS大赛闭幕式暨颁奖典礼:下一个50亿应用花落谁家? MDCC 2014移动开发者大会开幕:全生态系统齐聚 开发者成主角 蓝港互动有限公司董事长&amp;amp;首席执行官王峰:移动互联网泛娱乐化趋势 多盟联合创始人&amp;amp;总裁张鹤:多盟DSPAN助力开发者高效变现 创新工场联合创始人汪华:移动互联网时代的跃迁式增长 阿里巴巴集团UC移动事业群总裁俞永福:AMAP Inside——更专业、更开放 《程序员+》移动应用上线 启动“2014 MDCC十大人气应用/产品评选活动” 微软开发体验与平台合作事业部大中华区DX部门总经理Srikanth Raju:基于云的跨平台开发 MDI窗口出错 新手请教。如何在cgi程序中得到由url传递过来的值 ISA 2K发布多个WEB 服务器问题,(我都要疯了) 我的xp怎么不能装vc6.0?再线等待!(20分) 急~~~高分求救~! 请教各位师兄。这个可以实现吗? 向高手请教(如何把客户端的图片传到服务器?) 各位大虾.水晶报表的关键一步了.实现了我就可以水晶报表的打印了! 急急!!!!怎样才能取得java函数传过来的参数呢? %%%%非高手勿進%%% CSDN有些人素质太差! IShellFolder::GetDisplayNameOf 如何获得全名? 代理Type分别为transparent,anonymous,high anonymity,优劣? 为感谢computersim在大力相助,特奉送100分,快来拿啊 请教网上书店系统的设计思想和例子。 VC中使用FLASH的OCX控件如何取得Movie的原始大小,且如何按指定比例缩放?问题解决后必给分。 有关“隐藏”,“覆盖”的一些问题: 如何把A库中A表原样复制到B库中去? 怎样取得鼠标点击DataGrid控件时是哪一行,哪一列呢?(C#) ISA 2K发布多个WEB 服务器问题,(我都要疯了)高分求救 这个问题怎么办?? (ADO OPEN) Up 有分! 母亲生日,你觉得送什么礼物为好? 用c++ 写的 hello 程序在unix g++ 编译通过后,运行出错 如下几个初级问题要问,高手们请进-> SQLSERVER高手进来聊聊........ 怎样用代码实现两台电脑之间的文件传输? 哪位知道Microsoft Firewall Client 的下载地址? 关于RECORDset的问题,求教 如何在web页面使用 Windows 窗体控件,最好有例子! 使用DOM的XMLHttpRequest对象来发送xml请求,但当返回的响应带有中文时候,在PDA上无法正常显示,我使用MultiByteToWideChar也没用。有人 请问在窗口中放置控件时,PB是否有靠近格线对齐的功能。如果有,在哪设置? DELPHI中FASTNET组件使用方法 请问在SELECT查询中怎样娶得行号? 在一般的类中如何得到当前文档的指针? 巨菜问题:重装xp后grub启动菜单消失,怎么办? FIP上传问题,非常着急,在线等,解决就结贴, 用javaScript打开窗口后,原窗口的gif动画不动了 FindWindow的用法 反正没几个人能回答,发来玩玩。 在当前文档中如何实现刷新操作? 构造sql语句时,表名或字段有可能是sql的保留字段,如何解决? 小弟急需文件操作和线程管理方面方法技巧的资料,望各位英雄赐教 怎么将power point打包成exe 如何恢复execl中vba的密码 怎样在ISA中设置带宽限制? 如何实现数据库的更新?? 搜胡首页是<<美英百架战机空袭伊拉克 攻伊序幕已拉开>>,但... string 读取的问题。 正在看c++primer的请看(高手当然也能看拉) 有哪位高手用过bcp_exec导入数据吗? vb数据库安全问题 门槛粤语有没读门狠噶类似读音的的的的 茉莉花的精神和品质编得也行,要有事例就行,就像梅花坚贞,是因为它傲雪开放 英语翻译汽车上用的 血浆出来血管就是组织液?也就是说渗出毛细血管就是组织液?那成分不一模一样?他们可以直接转化? 从茉莉花这首民歌中发现茉莉花有什么特点多点 金纺柔顺剂香味金纺柔顺剂 都有哪些香型 哪个会比较好闻点?麻烦把香味说的形象点.不要太抽象.店员肯定不会让我打开闻吧.还有牛奶?》 爆炸形式有几种? 帮忙翻译一下,亲~ my family and i are on a vacation in the mountains , i want to call you butmy phone is not working (和上面一起的) ORIGA 无杆气缸翻译成中文是什么品牌 小猪用英文怎么说 请诸位帮我翻译一下:A gentle and quiet girl's son want to,how so rude? Lift Cylinders 翻译成提升器气缸对吗 英语翻译如题. 小猪 英文怎么说我记得词典上看过,有专用词汇,不是pig.那是泛称,请有水准的人来指点下.不要揣着糊涂装明白,借此来骗分. 塔里木盆地和四川盆地哪里天然气多? 平衡吊翻译成英语 急用!请帮帮忙吧! 关于罗志祥的英语文章不要百度的那篇Alan Luo...的,在全班面前演讲用,不要太长了,一两分钟就好.急~ throw a tantrum是什么意思 成长的足迹500字作文 翻译"你哥哥现在在哪儿度假呢?(on a vacation) 赞美家乡的作文---公安写景1/2,写变化1/2 成长的足迹 作文 要500字以上啊 英汉互译:how far on vacation stay at home 奥林匹克会旗--五环旗的设计者是谁 有两种气态烷烃的混合物,其平均摩尔质量为30g/mol,则下列说法正确的是:A、一定有甲烷B、一定有乙烷C、可能是甲烷和乙烷的混合物D、可能是丙烷和乙烷的混合物请说明原因, 石磨面粉机、新型石磨面粉机、石磨面粉机组哪里的最好? 奥林匹克五环旗的五种颜色各表示哪个洲 初三化学酸、碱、盐部分的实验题实验题最头疼了,各位给我收集一些题来练习吧,多多益善啊, Fe+KSCN===? 奥林匹克会旗五环旗的设计者是( )A欧文斯 B顾拜旦 C维凯拉斯 镍锰电池,助焊剂的英文翻译 元素符号口诀类似于“碳C,铜Cu,N氮、P磷、S硫.” 有芳香气味的是不是一定是芳香烃啊? 英语翻译Elemental analyses of the samples are summa-rized in Table 1.The most striking feature of the results is that the content of aluminum ions decreased progressively while that of silicon ions increased as crystallization proceeded.The incre 石磨面粉有什么特点?如何辨别 石磨面粉好卖吗 英语翻译1Always WALT on the pavement!2ATthe traffic lights3Can you see the green man Yes.4At a zebra quickly5Is there any traffic?No 某密闭容器内有X、Y、Z、W四种物质,在一定条件下充分反应,测得反应前后各物质的质量如下表:物质XYZW反应前质量/g41102 反应后质量/g待测548下列说法正确的是A.反应后X的质量为8g B.Z与W的 石磨面粉设备 英语翻译谁帮我把“把某人锁在外面”翻译成英语单词? 为什么吃石磨面粉 歌颂人民警察岗位大练兵的文章 有理数的性质为顺序性,稠密性,四则运算封闭性. 石磨面粉前景怎么样 歌颂警察的文章最好要短一点儿的,没有别的要求, 原子序数是50的原子结构示意图怎么画 英语翻译i inform you sir that is transferred with the cre-doc by the only system that work in algeria 这句话怎么翻译合适,一个客户的话,但是里面有我不了解的东西, 基里巴斯由哪33个岛屿组成的? 有理数的概念 阿尔及利亚概括 组成英国的诸多岛屿之中面积最大的岛屿的名称? 有理数定义 阿尔及利亚都有些主要的港口啊 关于岛屿名称的有哪些 “非正有理数”是什么意思? 怎样的生物钟和生活规律才是最健康的? 世界的各大岛屿及其名字 券字噶 噶粤语读法点读? 小螃蟹会随着潮汐规律,形成生活规律,这是因为它的身体里确实有一个生物钟的结构.对吗? 英语翻译
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘