首頁 > ActionScript, FLEX > FLEX AS3 使用 SOCKET 連接 POP3

FLEX AS3 使用 SOCKET 連接 POP3

2009年1月16日  瀏覽次數 : 3,969

因為工作上的需要想要撰寫一支程式可以自動收取 POP3 SERVER 上的郵件,並且自動下載附加檔案存在電腦中,並且還可以將郵件寫入資料庫中備份。

原先的構想是想用 ColdFusion 的 Tag <cfpop> 這個標籤來完成,但是畢竟是人家寫好的程式碼,有些東西還是比較不合乎需求,例如我要將每封郵件都存在各自的資料夾中,雖然 <cfpop> 就可以做到,但是效能總是差了一點,因此想說用 AS3 能否做到這樣的功能,FLEX AS3 中提供了一組 Socket 類別,可以讓我們連接 POP3 SERVER

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12">
	<mx:Script>
		<![CDATA[
			public var mysocket:Socket=null;
 
			private function startConnect():void{
				this.mysocket=new Socket("pop3.mail2000.com.tw", 110);
				this.mysocket.addEventListener(ProgressEvent.SOCKET_DATA, process);
			}
			private function endConnect():void{
				this.mysocket.writeUTFBytes("quit\n");
				this.mysocket.flush();
				this.textArea.text=this.textArea.text + this.mysocket.readUTFBytes(this.mysocket.bytesAvailable);
			}
 
			private function process(event:ProgressEvent):void{
				var tmpStat:String=this.mysocket.readUTFBytes(this.mysocket.bytesAvailable);
				if (tmpStat.indexOf("+OK MPOP3 Server") != -1)
				{
					mysocket.writeUTFBytes("user 帳號\n");
				}
				if (tmpStat.indexOf("+OK Password required") != -1)
				{
					mysocket.writeUTFBytes("pass 密碼\n");
				}
				if (tmpStat.indexOf("+OK heydod has") != -1)
				{
					mysocket.writeUTFBytes("retr 1\n");
				}
				this.textArea.text=this.textArea.text + tmpStat;
				mysocket.flush();
			}
		]]>
 
	</mx:Script>
	<mx:TextArea width="100%" height="50%" id="textArea"/>
	<mx:HBox width="100%" horizontalAlign="center">
		<mx:Button label="連線" click="startConnect()"/>
		<mx:Button label="斷線" click="endConnect()"/>
	</mx:HBox>
</mx:Application>

這個範例碼可以幫我們取得 POP SERVER 上的郵件,但是每封郵件都尚未解析,因此我們還要另外將 HEADER 與 BODY 以及郵件的附加檔案儲存起來,不過這可就大工程啦。

Random Posts

Loading…

:: 把這篇好文推到書籤網站與更多人分享吧 ::
  • funp
  • Hemidemi
  • YahooKimo
  • Google
  • udn
  • Haohao
  • Live

相關文章 :

Ausir ActionScript, FLEX , , , ,

  1. 口袋
    2009年9月17日16:54 | #1

    大大 想請您指點迷津~
    我依您上面的格式 依樣畫葫蘆連了一個我自己做的 TCP SERVER
    該SERVER 是用 BCB 軟體寫的.
    然後 我直接在FLEX 編譯執行 該專案.
    都能正常的連接到我的 TCPSERVER
    可是我將該專案得資料 拿到另一台電腦後,卻變成無法正常連線
    實際上有連上 但馬上就斷線(在TCPServer 那邊有看到連接進去 但又馬上斷線…)
    唯獨在 寫專案的這台電腦上 無此問題…是否有哪些要注意的?
    還請開通指點@@”

  2. 2009年9月17日16:56 | #2

    你在對方電腦安裝 DEBUG 的 FLASH PLAYER
    看看是甚麼錯誤訊息

    如果沒有錯 應該代表順利連上
    那應該是其他問題了…

    因為我用 SOCKET 只有連過 POP 跟 FTP 所以我也不是很清楚
    用來做遊戲 SOCKET 會怎樣~

  3. zhenjiaseu
    2009年11月25日20:12 | #3

    您好,我想请教一个问题,用SOCKET连接FTP,出现安全策略的问题应该如何解决呢?
    我在本地自己搞了一个FTP服务器,地址为本机地址192.168.16.21,然后在FLEX里面通过SOCKET与之连接。出现下面错误不知道该如何解决,郁闷一天了。。。请问连接FTP需要什么注意的吗?
    SecurityError–>Error #2048: 安全沙箱冲突:file://C:\Documents and Settings\Administrator\My Documents\Flex Builder 3\FlexFtpUpload\bin-debug\FlexFtpUpload.swf 不能从 192.168.16.12:21 加载数据。
    如果方便的话,希望可以请教下。我QQ779425883,谢谢

  4. 2009年11月26日10:54 | #4

    @zhenjiaseu

    我當初在 DEBUG 模式下是可以正常連結
    但是因為我沒有實機使用
    所以我不知道會不會有安全性的影響
    這點可能要再另外測試

    不過 2048 的確是跨網域的安全性問題

  5. zhenjiaseu
    2009年11月26日15:22 | #5

    恩,谢谢你的回答。
    Adobe的安全策略头疼啊。。。

  1. 本篇文章目前尚無任何 trackbacks 和 pingbacks。