问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用VB发电子邮件,请各位高手指教!

发布网友 发布时间:2022-04-30 02:22

我来回答

1个回答

热心网友 时间:2022-06-29 03:39

使用VB收发电子邮件

一、准备工作

在VB中编写电子邮件程序需要通过调用微软公司的MAPI(Messaging Application Programming Interface,消息应用程序编程接口),这需要借助两个实现电子邮件收发功能的核心控件:MAPI会话控件和MAPI消息控件。MAPI会话控件用于建立和控制一个Microsoft Mail会话,MAPI消息控件用于创建和收发邮件消息。此外,Windows系统中必须要有遵从MAPI的邮件系统,比如Exchange、Outlook等软件,而还要进行一番设置,确保邮件系统可以正常使用。

MAPI控件在哪里找呢?
在VB中就有现成的,不过程序没有直接放置在工具箱里,需要我们自己将MAPI控件加入VB工具箱。首先直接在VB左边的控件栏中右击鼠标,并在弹出菜单中选择“部件”命令,这时可以激活部件设置窗口,在其中的“控件”列表框中选取“Microsoft MAPI Controls”一项(如图1所示),接着按下“确定”按钮之后可以发现工具箱中将多出了两个图标,这就是MAPI会话控件和MAPI消息控件的图标(如图2所示)。

二、邮件发送程序

添加好我们所需要的控件之后,就开始定制邮件的发送程序吧。这个邮件发送程序的基本处理过程是:根据用户输入信息组成邮件,然后使用MAPI消息控件的Send方法将邮件发出。具体的方法按照下述步骤完成:
1、新建一个VB项目,并将缺省窗体Form1的Caption属性设置为“发送邮件”。

2、在Form1中加入一个MAPI会话控件MAPISession1和一个MAPI消息控件MAPIMessages1。

3、在Form1中加入三个TextBox控件,将它们的名称属性分别设置为“txtSendTo”、“txtSubject”和“txtMessage”,另外还要将txtMessage的Multiline属性设置为“True”。这三个TextBox控件将分别用于填写邮件的收件人地址、邮件主题和邮件正文。

4、在Form1中加入三个Label控件,将它们的Caption属性分别设置为“收件人”、“主题”和“内容”,并将它们放在合适的位置用以标注相应的TextBox控件。

5、在Form1中加入一个Command Button控件,将其Caption属性和名称属性分别设置为“发送”和“Send”。
所有的控件添加完毕之后应该如图3所示。

下面是代码部分的内容:

1、将下列代码加入Form1的Form_Load事件:

Private Sub Form_Load()
MAPISession1.SignOn /运行程序之后进行邮箱登录操作
End Sub

2、将下列代码加入Form1的Form_Unload事件:

Private Sub Form_Unload(Cancel As Integer)
MAPISession1.SignOff /退出程序时候进行退出邮箱操作
End Sub

3、将下列代码加入cmdSend的Click事件:

Private Sub cmdSend_Click()
With MAPIMessages1
.MsgIndex = -1
.RecipDisplayName = txtSendTo.Text /收信人地址
.MsgSubject = txtSubject.Text /邮件主题
.MsgNoteText = txtMessage.Text /邮件正文
.SessionID = MAPISession1.SessionID /发送程序和邮件工具之间建立的任务数
.Send
End With
MsgBox "邮件发送完毕!", , "发送邮件" /发送成功显示信息框
End Sub

这样一个电子邮件发送部分就制作完成了,运行程序之后只要填写好邮件的收件人、主题和内容后,按下“发送”命令按钮,邮件就已经成功地发往目的地了(如图4所示)。

三、邮件接收程序

邮件接收程序比邮件发送程序要复杂一些,这个程序首先需要使用MAPI消息控件的Fetch方法读取邮件,这个过程将把用户收件箱中所有未读邮件全部装入MAPI消息控件中。接着,检查MAPI消息控件的MsgCount属性以确定通过Fetch方法读取的邮件的总数,然后可以通过设置MAPI消息控件的MsgIndex属性来指定具体需要处理哪一封邮件。需要说明的是,MsgIndex属性值的计数是从0开始的,也就是说,第一封邮件的索引号是0,第二封邮件的索引号是1,依次类推。具体步骤如下:

1、新建一个VB项目,将缺省窗体Form1的Caption属性设置为“接收邮件”。
2、在Form1中加入一个MAPI会话控件MAPISession1和一个MAPI消息控件MAPIMessages1。
3、在Form1中加入三个Label控件和一个TextBox控件,将三个标签控件的名称属性分别设置为“lblMsgDateReceived”、“lblMsgOrigDisplayName”和“lblMsgSubject”,将TextBox控件的名称属性设置为“txtMsgNoteText”,并将标签控件的Caption属性和文本框控件的Text属性的内容清空。这四个控件将分别用于显示邮件的日期、发件人、主题和内容。
4、将txtMsgNoteText控件的Locked属性和Multiline属性设置为“True”,ScrollBars属性设置为“2-Vertical”。
5、在Form1中再加入四个Label控件用于标注上述四个控件,将它们的Caption属性分别设置为“日期”、“发件人”、“主题”和“内容”。
6、在Form1中加入一个Label控件,将其名称属性设置为“lblMsgCount”,Caption属性设置为“第 0 封邮件,总计 0 封邮件”。这个控件用于显示接收的邮件总数以及当前正在处理第几封邮件。
7、在Form1中加入三个Command Button控件,将它们的名称属性分别设置为“cmdPrevious”、“cmdNext”和“cmdClose”,Caption属性分别设置为“上一封”、“下一封”和“关闭”。

所有的控件添加完毕之后应该如图5所示。

小蘑菇:那么具体的程序代码呢?
小叮当:又着急了不是?我还会骗你吗?下面就是具体的程序代码:
1、编写一个子程序FetchNewMail:

Public Sub FetchNewMail()
MAPIMessages1.FetchUnreadOnly = True
MAPIMessages1.Fetch /Fetch命令将信件抓到系统存贮器的inbuffer中
End Sub

2、编写一个子程序DisplayMessage:

Public Sub DisplayMessage()
lblMsgCount.Caption = "第 " & Ltrim(Str(MAPIMessages1.MsgIndex + 1)) & " 封邮件,总计 " & Ltrim(Str(MAPIMessages1.MsgCount)) & " 封邮件" /由MsgCount知道信件数量,再用MsgIndex设置要看 哪一封信件的内容、标题
lblMsgDateReceived.Caption = MAPIMessages1.MsgDateReceived /收取信件的日期
txtMsgNoteText.Text = MAPIMessages1.MsgNoteText /收取信件的内容
lblMsgOrigDisplayName.Caption = MAPIMessages1.MsgOrigDisplayName /发送邮件的姓名
lblMsgSubject.Caption = MAPIMessages1.MsgSubject /邮件主题
End Sub

3、将下列代码加入Form1的Form_Load事件:

Private Sub Form_Load()
MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
FetchNewMail /调用Fetch子程序
DisplayMessage /调用DisPlayMessage子程序
End Sub

4、将下列代码加入cmdPrevious的Click事件:

Private Sub cmdPrevious()
If MAPIMessages1.MsgIndex > 0 Then
MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex - 1 /当收取信件超过1封的时候,通过“上一封”按钮查看前面的信件
DisplayMessage
Else
Beep
End If
End Sub
5、将下列代码加入cmdNext的Click事件:
Private Sub cmdNext_Click()
If MAPIMessages1.MsgIndex < MAPIMessages1.MsgCount - 1 Then
MAPIMessages1.MsgIndex = MAPIMessages1.MsgIndex + 1 /当收取信件超过1封的时候,通过“下一封”按钮查看后面的信件
DisplayMessage
Else
Beep
End If
End Sub
15、将下列代码加入cmdClose的Click事件:
Private Sub cmdClose_Click()
Unload Me
End Sub

程序运行后如图6所示。在窗体加载过程中,窗体Load事件中的代码会读取新邮件,如果有新邮件,就显示第一个新邮件,如果有多个新邮件,则可以使用“上一封”和“下一封”命令按钮前后翻阅。

参考资料:http://www.czysoft.cn/zl/vbmail.htm

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
男生买卫生巾支援灾区对吗? 打了耳洞三天下了耳钉,怎么办!! cs七龙珠家里两台电脑怎么连局域网玩 CS七龙珠怎么创建联网房间 CS七龙珠怎样和电脑玩 CS七龙珠能和电脑对打吗 不然怎样调对打模式有哪些地图!!!急需... 糖葫芦的山楂在哪里买 衡水市康宁街与人民路交叉口市一建家属院7号楼,1-201怎么翻译 梦见朋友搬家时小孩因我不愿离去,且小孩坐在床上跑出许老鼠? 梦见搬家是什么预兆解梦 电子邮件自动分拣系统 程序设计 现在一个手机号码注册后解绑,要过多久才能重新申请一个? 电子邮件系统的设计和实现用什么语言比较好?容易实现 牛排炒什么菜好吃 VR电影到底是什么样子 VR电影在哪里可以下载? 鸡肉跟白萝卜可以一起吃吗 鸡腿肉炒平菇的做法,鸡腿肉炒平菇怎么做好吃 油条对人体的好与坏 黑鸡肉与白鸡肉的营养区别? 求EaseUS Todo Backup Home(数据备份软件) V13.5 官方版网盘资源 白什么切菜名? 我用手机拍的照片背景不是太好看,有没有什么软件可以改背景的。急?? 中脉laca美体内衣有用吗,还有里面的能量石是什么东西,中脉是传销吗? 用手机什么软件可以把相片改背景换衣服? 中脉美体内衣怎么样 中脉内衣真的有塑身效果吗? 自己的小店,如何才能支持微信支付呢? 别人给你大批让你加这些微信,然后建群,加一个人拉就拉进群里,8元钱一人,这是什么套路,犯法吗? 各位朋友大家好,我认识一个做中脉美体内衣的人,不停的跟我说要我试试她们的产品,说这内衣特别好,收身 说微信注销十五天以后可以注册新的多长时间算十五天 VC++编的电子邮件发送和接收程序,要实验报告。急,急,急!_ 想编写一个Android系统的邮件系统,没思路,网上例子也不好找,求指教。。。。! 为什么我开发的邮件系统接收邮件的内容含有HTML标签 163邮箱用的是什么邮件系统?是自主开发的吗,企业能否购买自建? 邮件代理端软件的设计与开发 第一次注册,要等多久在注册个? 哪些行为可被认定为“未经用户同意收集使用个人信息”? 网页编程调用Outlook 邮件自动发送 企业要不要自己开发邮件发送系统 《极限挑战》节目有什么创新吗? 对于非法使用公民个人信息的行为是否入罪? 新手机号几天可以申请? 简述个人信息收集保存和使用的原则 App违法违规收集使用个人信息行为认定方法是什么? 收集和使用个人信息应当遵守的原则 网络运行者收集使用个人信息应当遵循什么原则 电信收集和使用个人信息的目的和用途是什么? 网络经营者收集使用个人信息应当遵循什么原则 电信收集和使用个人信息的方式和范围是什么?