本文提供經典 ASP (VBScript) 使用 JMail.POP3 元件連線 POP3 伺服器、下載郵件並將附件儲存至伺服器磁碟的完整程式碼。註:JMail 為商業元件,現代專案建議改用 .NET System.Net.Mail 或 PHP imap 函式庫。
<% ' JMail 接收郵件附件範例 ' 作者: kEvin1986 ' 日期: 2005-08-14 User = Request.Form("User") Pass = Request.Form("Pass") Popserver = Request.Form("Popserver") If User <> "" And Pass <> "" And Popserver <> "" Then On Error Resume Next Set objMail = CreateObject("JMail.POP3") objMail.Connect User, Pass, Popserver If Err.Number <> 0 Then Response.Write "連線失敗: " & Err.Description Err.Clear Else ' 取得第一封郵件 (索引從 1 開始) Set objMsg = objMail.Messages.Item(1) If Not objMsg Is Nothing Then Response.Write "郵件大小: " & objMsg.Size & " bytes<br>" ' 遍歷附件並儲存 Set Attachments = objMsg.Attachments For i = 0 To Attachments.Count - 1 Set Att = Attachments(i) Response.Write "附件名稱: " & Att.Name & "<br>" ' 儲存至當前目錄下的 uploads 資料夾 savePath = Server.MapPath("./uploads/") & Att.Name Att.SaveToFile savePath Response.Write "已儲存至: " & savePath & "<br>" Next Response.Write "處理完成!" Else Response.Write "信箱中無郵件" End If objMail.Disconnect End If Set objMail = Nothing End If %> <form method="post"> POP3 伺服器: <input type="text" name="Popserver" value="pop.gmail.com"><br> 帳號: <input type="text" name="User"><br> 密碼: <input type="password" name="Pass"><br> <input type="submit" value="接收並儲存附件"> </form>
Connect(username, password, server),支援 SSL 連線需額外設定 objMail.SSL = True 並指定 port 995。Item(1) 為最新郵件,實務上需迴圈處理多封。Attachment.SaveToFile(path) 需寫入權限,建議建立專屬上傳目錄並設定 IIS_IUSRS 寫入權限。On Error Resume Next 捕捉 COM 元件錯誤,檢查 Err.Number。| 問題 | 解決方向 |
|---|---|
| 連線逾時 | 檢查防火牆 port 110/995、伺服器位址正確性、SSL 設定 |
| 驗證失敗 | 確認帳號密碼、啟用「低安全性應用程式存取」或使用應用程式專用密碼 (Gmail) |
| 附件儲存失敗 | 目錄寫入權限、磁碟空間、檔名過長或含非法字元 |
| 中文檔名亂碼 | JMail 版本支援度不同,嘗試 Att.Name = Server.URLDecode(Att.Name) 或手動解碼 |
此範例展示經典 ASP 處理郵件附件的基本流程,實際部署請依據安全規範加強防護並考慮技術棧現代化。