国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

用PB編寫郵件應用程序

2024-07-21 02:10:21
字體:
來源:轉載
供稿:網友
 


  由于受到強大數據庫功能的掩蓋,pb的郵件功能鮮為人知。在vb中可以輕松地利用cdo控件發郵件(delphi中用nmsmtp),而pb中的郵件函數比它們更靈活、方便。

  pb以其獨特高效的數據庫訪問技術,贏得了廣大程序員的青睞。從表面上看,它似乎只適合于開發數據庫應用程序,而事實上,pb遵照信報接口mapi的標準,開發了許多內部函數和數據結構,用于對電子郵件提供支持,因此也是一個相當不錯的郵件應用程序開發工具。

  一個郵件應用程序要處理的基本事務主要包括:登錄到郵件服務器開始會話、接發郵件、結束郵件會話。在pb中,所有這些事務都圍繞mailsession對象來展開,因此,編程時,需要在主窗口中定義一個該類型的實例變量:

  mailsession mymail

  然后在open事件中將其初始化:

  mymail=create mailsession

  1.登錄到郵件服務器

  mymail經過初始化以后,還要用maillogon命令將其連接到一個郵件服務器:

  mymail.maillogon(′jq75′,′alexander′,mailnewsessionwithdownload!)

  前兩個參數分別為用戶名和口令,若被忽略,運行時就會出現一個注冊對話框。最后一個參數表示新建一個郵件會話,并將服務器上屬于jq75的郵件下載到他的收件箱中。

圖1

  2.閱讀郵件

  用戶信息在服務器上通過驗證以后,一個有效的郵件會話就建立了,接下來要做的工作就是接發郵件。

  pb用一個mailmessage對象來描述一封郵件,該對象封裝了郵件的主題、地址、消息體和附件等信息。圖1是郵件應用程序的閱讀界面,它列出了收件箱中的所有郵件,可選擇其中一封進行閱讀。主窗口open事件的代碼為:

  …… //連接到郵件服務器

  mymail.mailgetmessages()

  //用收件箱中的郵件填充mymail對象

  inum=upperbound(mymail.messageid[])

  //獲取收件箱中的郵件數目

  for i=1 to inum //讀取收件箱中的每一封郵件,并將其主題添加到列表框中

  mymail.mailreadmessage(mymail.messageid[i],msg, mailentiremessage!,true)

  tab—1.tabpage—1.plb—1.additem(msg.subject,1)

  next //msg為mailmessage類型的實例變量

  在plb—1控件的selectionchanged事件中加入下列代碼:

  mymail.mailreadmessage(mymail.messageid[index],msg, mailentiremessage!,true)

  sle—1.text=msg.subject

  //顯示當前郵件的主題

  sle—2.text=msg. recipient[1].address

  //顯示發件人地址

  sle—3.text=msg.datereceived

  //顯示收件時間

  mle—1.text=msg.notetext

  //顯示郵件的消息體

  iattachmentfilenum=upperbound(msg.attachmentfile[])

  //獲取當前郵件的附件數目

  for i=1 to iattachmentfilenum

  strattfile= strattfile +msg.attachmentfile[i].pathname+″~r~n″

  next //strattfile為string類型的實例變量

  在“附件”按鈕的clicked事件中加入下列代碼:

  messagebox(″郵件附件″, strattfile) //顯示當前郵件的附件及其在硬盤上存放的位置

  3.發送郵件

  圖2是郵件應用程序的發送界面,它接收收件人地址、郵件主題、消息體和附件,用于填充一個mailmessage類型的對象msg,然后發送。“添加附件”按鈕用于選擇磁盤文件,其clicked事件代碼為:

圖2


  string docname, named

  integer value

  value = getfileopenname(″選擇附件″, docname, named, ″doc″, ″all files (*.*),*.*″)

  if value = 1 then

  plb—2.additem(docname,1)

  //docname中必須包含完整的路徑信息

  “刪除附件”按鈕用于把已添加的文件去掉,其clicked事件代碼為:

  ind= plb—2.selectedindex()

  if ind〈〉-1 then plb—2. deleteitem(ind)

  “發送”按鈕的clicked事件代碼為:

  msg.subject=sle_4.text //郵件主題

  msg.notetext=mle—2.text //消息體

  msg.recipient[1].recipienttype=mailto!

  //指定收件人類型為mailto!

  msg.recipient[1].address=′smtp:′+sle—5.text

  //收件人地址,前面必須加上smtp協議

  for i=1 to plb—2.totalitems()

  //把選中的文件加到附件中

  msg.attachmentfile[i].filetype=mailattach! //指定附件i的類型

  msg.attachmentfile[i].pathname= plb—2.text(i) //附件i的完整文件名

  next

  mymail.mailsend(msg) //發送郵件

  4.結束郵件會話

  在“退出”按鈕的clicked事件中加入下列代碼:

  mymail.maillogoff() //結束郵件會話

  destroy mymail //銷毀會話對象

  至此,一個簡單的郵件應用程序就編好了,它雖然還不足以和foxmail、outlook相媲美,但已經具備了它們最基本的功能。

  例子中的程序在pb6.5中調試通過,大部分代碼可以直接利用

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 方城县| 霍州市| 兴文县| 雷波县| 乐山市| 闸北区| 毕节市| 昌宁县| 湾仔区| 平原县| 桃园县| 思茅市| 盐池县| 万荣县| 延吉市| 沂南县| 连州市| 刚察县| 响水县| 平江县| 淮滨县| 同仁县| 定陶县| 庆阳市| 元朗区| 玉田县| 翁牛特旗| 宜昌市| 竹山县| 三都| 喀喇沁旗| 两当县| 福海县| 斗六市| 布拖县| 双鸭山市| 金溪县| 荆门市| 清苑县| 凤翔县| 新源县|