[返回]
计算机世界1999年第14期

在PB应用中收发电子邮件

广东珠海 卞国斌

  在PowerBuild 应用中实现收发电子邮件, 主要是通过PowerBuild 系统提供的一套用于邮件操作的内嵌函数。这些函数实现其应用到微软公司的MAPI 标准之间的接口。

  一、创建一个MDI 风格的窗口w_mail

  在这个窗口上, 放置一个含接收邮件、发送邮件和地址薄三个带图标的菜单项的菜单m_mail, 一个多行编辑器mle_1。

  二、为各菜单项编制事件处理程序(Script)

  程序行中// 后的为说明文字。

  1. 在菜单项" 接收邮件" 的单击(Clicked) 事件下输入下面程序:


   mailsession mses  

    // 定义对象mses, 以供在程序中引用

   mailmessage mmsg    

    // 定义结构mmsg, 此结构用于描述邮件的内容

   mailrecipient mrec      

    // 定义结构mrec, 它标识邮件的接收者和发送者

   mailreturncode mreturn 

    // 定义返回码, 用于存放函数的返回值

   int mnbr  // 定义临时变量

    // 产生邮件会话对象mses

   mses = create mailsession

    // 邮件登录。此处用户名, 口令缺省

   mreturn = mses.maillogon(mailnewsession!)

   if mreturn <> mailreturnsuccess! Then

   messagebox(" 邮件登录"," 邮件登录失败!")

   return

   end if

   // 获得接收到尚未读过的邮件ID 号。

     它是放在mses 中的一个字符串数组

   mreturn = mses.mailgetmessages(true)   

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件获取"," 邮件获取失败或无新邮件!")

   return

   end if

    // 获得接收到尚未读过的邮件数目

   mnbr = upperbound(mses.messageid[])

   // 读取最后接收到的邮件内容。

    它被放在mmsg 的notetext 的字符串字段中

   mses.mailreadmessage(mses.messageid[mnbr],

    mmsg,mailentiremessage!,true)

   // 把获得的邮件内容放到窗口

     w_mai1 上的多行编辑器mle_1 中

   w_mai1.mle_1.text=mmsg.notetext

   // 退出登录

   mses.maillogoff()

   // 取消邮件会话

   destroy mses

  2. 在菜单项" 发送邮件" 的单击(Clicked) 事件下输入下面程序:


   mailsession mses

   mailmessage mmsg

   mailreturncode mreturn

   // 产生邮件会话对象mses

   mses = create mailsession

   // 邮件登录

   mreturn = mses.maillogon(mailnewsession!)

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件登录"," 邮件登录失败!")

   return

   end if

   // 弹出邮件地址窗口, 获取邮件接收者

    的地址。地址及名字是放在mmsg 中的

    一个结构数组

   mreturn = mses.mailaddress(mmsg)

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件地址"," 邮件地址出错!")

   return

   end if

   // 把窗口w_mai1 上的多行编辑器

     mle_1 中的内容放到mmsg 的notetext 字段中

   mmsg.notetext = w_mai1.mle_1.text

   // 发送邮件

   mreturn = mses.mailsend(mmsg)

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件发送"," 邮件发送失败!")

   return

   else

   messagebox(" 邮件发送"," 邮件发送成功!")

   end if

   // 退出登录

   mses.maillogoff()

   // 取消邮件会话

   destroy mses

  3. 在菜单项" 地址簿" 的单击(Clicked) 事件下输入程序:


   mailsession mses

   mailmessage mmsg

   mailreturncode mreturn

   // 产生邮件会话对象mses

   mses = create mailsession

   // 邮件登录

   mreturn = mses.maillogon(mailnewsession!)

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件登录"," 邮件登录失败!")

   return

   end if

   // 弹出邮件地址窗口, 获取邮件接收者的地址

   mreturn = mses.mailaddress(mmsg)

   if mreturn <> mailreturnsuccess! then

   messagebox(" 邮件地址"," 邮件地址出错!")

   return

   end if

   // 退出登录

   mses.maillogoff()

   // 取消邮件会话

   destroy mses

 
  三、执行程序

  正常执行程序的前提是, 在Powerbuild 应用所在的机器上已装有Microsoft Mail 客户软件。

  1. 单击" 接收邮件" 菜单项或工具图标, 执行接收邮件处理程序。该程序将最后接收到尚未读过的邮件内容显示到窗口的多行编辑器中。


    如果把mreturn = mses.mailgetmessages(true) 改为:

   mreturn = mses.mailgetmessages()

    便可获得全部邮件( 包含已读过的邮件)。

  2. 单击" 发送邮件" 菜单项或工具图标, 执行发送邮件处理程序。该程序执行过程中, 弹出地址簿窗口, 在你选择好接收者后, 则将窗口的多行编辑器中的内容发送出去。

  3. 单击" 地址簿" 菜单项或工具图标, 执行地址簿处理程序。该程序弹出通讯簿窗口, 供你增加、编辑或删除邮件地址属性。