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

设计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中。恭喜您成功了!
VB剪贴板的用法 VB开发CAI软件的小经验 VB软件设计中的几个问题 VB新手常见问题解答 VB修改注册表一特例 VB与VC混合编程中处理消息的方法 VB中的进制转换是怎样的? VB中调用带参数存储过程的实现(数据库) VB中感叹号“!”与圆点“.”的用法差异 VB中如何实现注册表的读写 VB中实现“擦视”技术 Visual Basic 2000年问题 Visual Basic 的未来 Visual Basic 命令分类表 Visual Basic三级跳 Visual Basic使用技巧 Visual Basic中的子类处理技术 Visual Basic中软件封面技术探秘 VisualBasic 软件设计中的几个问题 Windows 95/NT 运行了多长时间 -VB资料 Windows 的登录资料库 -VB资料 把回车键变成TAB键-VB资料 把文件置入到Text或RichText中 -VB资料 避免按 [ENTER] 回车键产生的“嘀”声 -VB资料 避免使用全局变量-VB资料 避免装载多份应用程序-VB资料 不定个数的参数 -VB资料 不在任务栏中显示,只能在Ctrl+Alt+Del对话框中显示或者干脆什么也不显示数 -VB资料 处理 Dropdown List型 Combo的录入问题-VB资料 VB创建和删除快捷方式 从程序中生成 exe 文件 -VB资料 大家开发界面使用什么,有多少人使用Swing,觉得优势是什么? kodak控件为什么不能在xp下用 printf 函数中 %p 是什么意思? vb.net如何执行外部命令 ***List Control 控件怎么编辑子项??200分重谢!!*** VB 如何开发在IE中可以直接下载安装的ActiveX控件? 大虾,我还该学什么?散分 do form 怎麼偉參數啊? 在 form 中又自私用啊? 請大家指教,謝謝!! 在系统权限中,create any table 和create table 我搞不清,查了书本也是迷糊,请帮我解释一下! 如何让BCB运行时不自动创建一个新工程? 问题青年来了 : 怎么把一个Win32 Application 改成ActiveX啊?解决了给你100分 新装宽带,征集防火墙方案 垃圾收集 在什么时候发生? 一个数据备份与还原路径合法的问题(50分)在线等待 将字符串中第i个字符删除? 什么函数返回ASCII码的对应的字符 Rose中Class Diagram中的几种类,我不清楚阿 给我一点对perl/python的初步认识 真有这样的事? 如何对jpg文件进行像素处理? 如何用正则表达式不区分大小写的匹配“<script ...>...</script>”? 为啥我得机器不能access 请教一个简单的问题 这样为什么不能加入记录,怎样加 请问,我想用两台2000共用一个ip上网,一个做iis服务器,另外一个做传奇的服务器。谁知道怎么做啊。 菜单拖动事件 使用TCP/IP编程是怎么一回事? 珊珊艾的玉照放出来啦!! 语句extern "C" AFX_EXT_API int WINAPI ExecSQL( CString strSQL ); 怎么理解?关键字AFX_EXT_API有何用? 急,怎么将String中的"/"替换成"\"? 四川的分数出来了吗? 关于MSFlexGrid的一个问题 高分求购经典旧书配本源码 《Windows编程指南》,清华出版社,成功后立马送分 关于百度插件问题 怎样用Request.QueryString("k")的值和select pass from c while pass=44的结果比较 关于在QR中横向打印的问题........... 为什么有的网站明明是用了数据库,但是网页文件却是.html的? 如何实现数据库中的图片存储 select ???? 这怎解决啊,Help!!!! 如何将结构相同的两表的数据合并? 建立一个简单的网上直播服务器需要那些步骤? 请教一个关于属性页的问题 可以这样查询吗 ?请问怎么出现设置目录的对话框,并且把路径保存edit中!!急急急急急急急(lxjgyl82) 关于监考管理 怎么通过ado动态的连接数据库 web服务器控件和html服务器控件有什么区别 合肥工業大學爆发學潮 Java程序监听数据库的操作 串口 小七狂捏爸爸脸蛋 万人迷任女儿摆弄(受不了良心谴责 埃及窃贼自惩任火车辗潘基文称涉日本历史认识发言“没有单指罕见海牛物种重现巴西海域 上次出现在美国加州已控制三成山火 或可于三周内默克尔将坚定支持盟友 同时确保德国不潘基文:对于涉历史言论遭日方误解感到叙利亚反对派称军方大部分已从指挥总部美媒评十大最危险工作 伐木业因死亡率英议会将就对叙干预投票表决 政府同意拉美太平洋联盟一体化迈出大步 四国就玻利维亚总统要求巴西遣返出逃议员默克尔称幼年时曾经遭遇过自行车被盗(普京与伊朗总统通电话探讨用政治外交手韩国向联合国提交东海大陆架划界信息 潘基文称涉日本历史认识问题发言“没有美媒评十大最危险工作 伐木业因死亡率津巴布韦一男子因用总统竞选海报当厕纸英议会将就对叙干预投票表决 政府同意潘基文称涉日本历史认识问题发言“没有普京与伊朗总统通电话探讨用政治外交手政协委员热议广东供给侧结构性改革:提李登辉办公室否认李欲组本土派政党传闻台湾南投近10名死者坟墓被盗 损失逾开局十三五 习近平为依法治网再加码“伴随成长”打造家庭教育指导《界别圆桌汇》推出30期:科技创新助黑龙江农业生产资料价格稳中有降《2015年四川省知识产权保护状况》政协委员:供给侧结构性改革要让消费者广东省政协委员热议供给侧结构性改革:广东“闯关”供给侧改革 科技创新要做不想给儿女们添麻烦 88岁老奶奶街头崔玉英会见新西兰自然历史公司董事长大桂东北大部江河将出现明显涨水过程1g箭毒蛙毒能杀死1.5万人,是真的不被注意的手机使用小习惯,或许会对你“金华OV”连续三个月稳居中国市场前谷雨夏未至 注意这两大养生原则别贪凉高手 | 埃德加·赖特勤敷面膜皮肤还是不好?这样做事半功倍专家解析:脊膜膨出的病因病理
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘