从VB程序里发送电子邮件

ZDNet软件频道 时间:2003-12-03 作者:ZDNet China |  我要评论(9)
本文关键词:MAPI vb vbtips visualbasic 电子邮件
你曾经有过想从VB程序里发送电子邮件的想法吗?有了VB的MAPI控件,这就很容易了。这个控件能够让你在任何符合MAPI的电子邮件系统上发送消息。
本文译自Builder.com,未经许可请勿转载

你曾经有过想从vb程序里发送电子邮件的想法吗?有了vbMAPI控件,这就很容易了。这个控件能够让你在任何符合MAPI电子邮件系统上发送消息,例如Outlook和Exchange。

要使用MAPI控件,你必须在项目的组件(Components)对话框里选择它们。它们被列入微软MAPI控件6.0里。然后,这两个叫做MAPISession和MAPIMessages的控件,会出现在你的工具箱里。在每个窗体里都要放一个(它们在运行的时候看不到)。

MAPISession控件用来建立到安装在系统上的、符合MAPI邮件系统标准的会话或者连接。这个控件具有UserName和Password这两个属性,用于电子邮件账号的登录。你可以在设计的时候设置这些属性,或者提示用户在代码里使用它们。然后,调用控件的SignOn方法来建立会话。一旦会话建立起来的,控件的SessionID属性就会返回会话的句柄。

MAPIMessages控件必须被传送给MAPI会话的句柄,它从MAPISession控件的SessionID属性里获得。一旦实现了这一步,你就可以使用MAPIMessages控件来完成各种任务,比如访问收件箱里的消息,保存、复制和删除消息,以及操作附件等。

对这个小窍门,我们对创建和发送消息感兴趣,这需要下面几步:

  1. 调用Compose(编写)方法来创建新的消息。
  2. 将收件人、标题和消息内容放在相应控件的属性里。
  3. 调用Resolve(解析)方法来验证消息的收件人。
  4. 调用Send(发送)方法来发送消息。

使用MAPIMessages控件发送消息并不是真的发送了它;而是将它放在邮件系统的送件箱里。消息真正要在什么时候发送取决于邮件系统的设置。当你的程序完成与邮件相关的活动时,就要调用MAPISession控件的SignOff方法来结束会话。

下面的代码说明了这一点。它假设含有代码的窗体包含有用于各种必要信息的控件:用户名、密码等等。

Private Sub SendMail_Click()

MAPISession1.UserName = tstUserName.Text
MAPISession1.Password = txtPassword.Text
MAPISession1.SignOn
MAPIMessages1.SessionID = MAPISession1.SessionID
MAPIMessages1.Compose
MAPIMessages1.RecipAddress = txtTo.Text
MAPIMessages1.MsgSubject = txtSubject.Text
MAPIMessages1.MsgNoteText = txtMessage.Text
MAPIMessages1.ResolveName
MAPIMessages1.Send
MAPISession1.SignOff

End Sub

使用Send方法的替代方法是发送一个值为真(True)的自变量。(这个自变量缺省的值是伪False——这就是为什么它没有被包含在上面代码里的原因。)

MAPIMessages1.Send True

在本文里,Send方法显示了一个消息框,用户可以在里面输入或者编辑消息的元素,然后点击发送(Send)按钮把它发送出去。

vb程序需要发送电子邮件消息(也许为了支持或者许可证的问题)的时候,将对电子邮件的支持集成到应用程序里,而不是要求用户切换到他们自己的电子邮件软件会更好。


本文作者:Peter Aitken:自从Visual Basic 1.0版以来,Peter Aitken就一直使用vb编程。他已经编写过很多关于visualbasic以及其他计算机和编程的书以及杂志文章了。


责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134