首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

ASP JMail 元件接收郵件附件並儲存至伺服器範例

     編輯:PHP 相關知識

ASP JMail 元件接收郵件附件並儲存至伺服器範例

本文提供經典 ASP (VBScript) 使用 JMail.POP3 元件連線 POP3 伺服器、下載郵件並將附件儲存至伺服器磁碟的完整程式碼。註:JMail 為商業元件,現代專案建議改用 .NET System.Net.Mail 或 PHP imap 函式庫。

完整程式碼 (receive_attachments.asp)

<%
' 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>

關鍵點說明

  • JMail.POP3 連線:Connect(username, password, server),支援 SSL 連線需額外設定 objMail.SSL = True 並指定 port 995。
  • Messages 集合索引:從 1 開始,Item(1) 為最新郵件,實務上需迴圈處理多封。
  • 附件儲存:Attachment.SaveToFile(path) 需寫入權限,建議建立專屬上傳目錄並設定 IIS_IUSRS 寫入權限。
  • 錯誤處理:使用 On Error Resume Next 捕捉 COM 元件錯誤,檢查 Err.Number。

安全性與維護建議

  1. 檔案型別驗證:儲存前檢查副檔名與 MIME 類型,拒絕 .exe、.bat、.php、.asp 等可執行檔。
  2. 檔名重命名:使用 GUID 或時間戳重命名避免衝突與路徑遍歷攻擊。
  3. 病毒掃描:整合 ClamAV 或商業防毒掃描儲存的附件。
  4. 定期清理:設定排程刪除超過 N 天的附件,避免佔滿磁碟。
  5. 改用現代技術:新專案請使用 ASP.NET Core (ImapClient)、PHP (imap_open) 或 Node.js (node-imap) 等開源方案,避免依賴商業元件。

常見問題

問題解決方向
連線逾時檢查防火牆 port 110/995、伺服器位址正確性、SSL 設定
驗證失敗確認帳號密碼、啟用「低安全性應用程式存取」或使用應用程式專用密碼 (Gmail)
附件儲存失敗目錄寫入權限、磁碟空間、檔名過長或含非法字元
中文檔名亂碼JMail 版本支援度不同,嘗試 Att.Name = Server.URLDecode(Att.Name) 或手動解碼

此範例展示經典 ASP 處理郵件附件的基本流程,實際部署請依據安全規範加強防護並考慮技術棧現代化。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved