| 上一篇主題 :: 下一篇主題   | 
	
	
	
		| 發表人 | 
		內容 | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 1 樓
  | 
		
			
				 發表於: 星期四 十月 26, 2017 5:48 pm    文章主題: 用JMail接收帶附件的郵件,如何得知附件檔名 | 
				     | 
			 
			
				
  | 
			 
			
				原本使用木瓜的myfll.fll收發郵件
 
但客戶反映,有時候會有部分郵件收不到,但開啟OUTLOOK就可以收到這被遺落的部分郵件,追蹤了一段時間,毫無頭緒。
 
 
藉此機會改用JMAIL收發,但接收郵件獲取附件的檔案名稱,就出現問題,程式碼如下 
 
 
 oPop3=CREATEOBJECT("jmail.pop3")
 
  oPop3.connect("username","password","pop3server")
 
  oCount=oPop3.Count   &&獲取郵箱裡的郵件總數
 
  FOR nCount1=1 TO oCount
 
      oMsg=oPop3.Messages.Item(nCount1)   &&建立按序號提取郵件信息的對象
 
*    ? oMsg.fromname    && 發件人
 
*    ? oMsg.subject   &&主題
 
*    ? oMsg.body    &&正文
 
     Atts=oMsg.Attachments
 
     nAttCount=Atts.count()
 
        FOR nCount2 = 1 TO nAttCount
 
           oAtts=Atts.Item(nCount2)
 
          attname=oAtts.name
 
           attdata=oAtts.data
 
        ENDFOR
 
*       oPop3.DeleteSingleMessage(nCount1)   &&刪除該郵件
 
  ENDFOR
 
  oPop3.Disconnect()
 
return
 
 
每當程式執行到 attname=oAtts.name 就跳開,出現OATTS is not an object.,請教各位先知,哪裡出了問題。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 2 樓
  | 
		 | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 3 樓
  | 
		
			
				 發表於: 星期五 十月 27, 2017 7:50 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| garfield大大,執行結果,情況一模一樣 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 4 樓
  | 
		 | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 5 樓
  | 
		
			
				 發表於: 星期五 十月 27, 2017 9:51 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				我也曾懷疑過功能限制,原先使用Free版本,執行第一行oPop3=CREATEOBJECT("jmail.pop3"),就發生Error,後來更換為Profersional,轉為出現上述問題。
 
 
目前正在MAPI或Winsock做選擇,但接收郵件的範例實在太少了,尤其牽扯上附件,案例更少,MAPI有找到一些線索,Winsock還沒頭緒,先嘗試一下MAPI,如各位先進有經驗,請提供指引。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 6 樓
  | 
		 | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 7 樓
  | 
		
			
				 發表於: 星期五 十月 27, 2017 10:39 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				可惜沒有( FUNCTION RetrPop3Email ) .       | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		garfield Site Admin
  
  註冊時間: 2003-01-30 文章: 2160
 
  第 8 樓
  | 
		 | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 9 樓
  | 
		
			
				 發表於: 星期一 十月 30, 2017 6:50 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				經過幾天的探討研究,終於大略完成使用MAPI來接收MS Outlook的郵件資料,
 
由於接收郵件的範例不多,帶附件的更少,今將程式碼公布如下
 
 
* xSes.Downloadmail=.T.     &&下載新的郵件
 
  xSes.Signon                           &&  xses及xmsg 為表單上的 MAPISession 及 MAPIMessages 物件
 
  xMsg.Sessionid=xSes.Sessionid
 
* xMsg.FetchSorted = .T.
 
  xMsg.FetchUnreadOnly = .T.   &&只取未讀過的郵件
 
  xMsg.Action = 1     &&切換到讀緩衝區
 
 
* 開始讀取出信件
 
  xMsg.Fetch
 
  FOR xi=0 TO (xMsg.MsgCount-1) && 讀取每一封信
 
     xMsg.MsgIndex=xi && 指定第幾封信
 
*    ? xMsg.MsgSubject
 
*    ? xMsg.MsgOrigDisplayName
 
*    ? xMsg.MsgOrigAddress
 
*    ? xMsg.MsgDateReceived
 
*    ? xMsg.MsgNoteText
 
*    ? xMsg.MsgRead
 
*    xMsg.Copy
 
     IF xMsg.AttachmentCount=0 && 無附件檔案時
 
*       xMsg.Delete  &&刪除該郵件
 
        loop && 讀下一封信
 
     ENDIF
 
     *讀取出所有附件檔案
 
     FOR xj=0 TO (xMsg.AttachmentCount-1)
 
         xMsg.AttachmentIndex=xj   &&指定第xj個附件
 
*        ? xMsg.PidTagAttachLongFilename   && 顯示長檔名
 
*        ? xMsg.AttachmentName   && 顯示檔名
 
*        ? xMsg.AttachmentPathName  && 顯示路徑+檔名
 
*        ? xMsg.AttachmentPosition
 
*        ? xMsg.AttachmentType
 
           Copy File (xMsg.AttachmentPathName) To "D:\"+(xMsg.AttachmentName)
 
     next
 
*    xMsg.Delete  &&刪除該郵件
 
  NEXT && 處理下一封信件
 
* xses.downloadmail=.F.     &&停止下載新的郵件
 
  xses.signoff
 
* set default to c:\test
 
* MESSAGEBOX("完成")
 
 
問題一:使用outlook2007,有安全性對話框困擾的解決方式,可以參照
 
https://support.hpe.com/hpsc/doc/public/display?docId=c02967866&lang=en-us&cc=us
 
 
上述網站登錄項目
 
HKEY_CURRENT_USER\Software\Policies\Microsoft\.......如不存在可改為
 
HKEY_CURRENT_USER\Software\Microsoft\..............
 
此方法可完美解決安全性對話框問題
 
 
問題二:附件的檔案名稱不支援長檔名,無語問蒼天,搞到最後竟然......期待解答
 
 
結論是,接收帶附件的郵件,如果有其他方式,我第一個捨去的一定是MAPI,註冊、安全性對話框、長檔名、原先執行路徑被強佔,問題一個接一個。
 
尤其是當取得郵件資料,回到資料庫做後續處理,才發覺所有路徑被被強制變更,很不友善的元件。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		ckp6250
 
 
  註冊時間: 2004-07-30 文章: 1645
 
  第 10 樓
  | 
		
			
				 發表於: 星期三 十一月 01, 2017 2:31 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				好奇請教一下,
 
您是那一類的需求,
 
需要自己用VFP去讀取信件? | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		SUNUSER86
 
 
  註冊時間: 2007-02-03 文章: 14
 
  第 11 樓
  | 
		
			
				 發表於: 星期四 十一月 02, 2017 9:20 pm    文章主題:  | 
				     | 
			 
			
				
  | 
			 
			
				| 上游公司新增訂單或變更訂單內容,都是使用E-Mail,附件內容有一定格式,將該附件解譯後,更新資料庫內容,並回傳郵件告知收悉。 | 
			 
		  | 
	
	
		| 回頂端 | 
		 | 
	
	
		  | 
	
	
		 |