自動保存郵件附件至指定文件夾

最近有個需求,ERP系統(tǒng)會自動發(fā)很多csv附件到我郵箱,我需要把這些附件上傳到FTP服務(wù)器,服務(wù)器會把這些csv的數(shù)據(jù)寫到另外一個系統(tǒng)的數(shù)據(jù)庫。

每次大概有30個郵件,每個郵件有一個附件,而且附件的名字都一樣,是一個csv的文件,我每次需要手動的把附件另存為一個新名字存到本地,然后FTP上傳。

每次大概要浪費(fèi)我10分鐘時間,而且毫無價值。

于是我就寫了一個VBA的自動處理程序,幾秒搞定。

如果你也有類似的需求,或者把附件再進(jìn)行寫入數(shù)據(jù)庫,或者附件是Excel,需要整合到數(shù)據(jù)庫,可以再在服務(wù)器開發(fā)一個自動處理機(jī)器人,設(shè)置每5分鐘檢測一下是否有新文件,如果有就寫入數(shù)據(jù)庫或添加到一個總Excel表格。這些VBA 或 C#都可以完美處理。

話說把大象裝進(jìn)冰箱分三個步驟:

第一步:

打開Outlook - Option - Trust Center - Truster Center Settings - Macro Settings - 勾選Enable all macros。

打開Outlook - Option - Trust Center - Truster Center Settings - Email Security - 勾選Allow script in shared folders 和 All script in public folders

重點(diǎn):重啟Outlook,我因?yàn)闆]重啟outlook,浪費(fèi)了很多時間。

第二步:

編寫宏程序,按下Alt+F11,創(chuàng)建新項(xiàng)目,把程序copy進(jìn)去,文件夾地址改一下

Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)

Public Sub SaveAttach(MyItem As Outlook.MailItem)

? ? SaveAttachment MyItem, "C:\Data\MailAttached\"

? ? 'MsgBox "附件已保存"

End Sub

Private Sub SaveAttachment(ByVal Item As Outlook.MailItem, path, Optional condition = "*")

? ? Dim olAtt As Outlook.Attachment

? ? Dim i As Integer

? ? Dim dateFormat

? ? dateFormat = Format(Now, "yyyy-mm-dd hh-mm-ss")

? ? If Item.Attachments.Count > 0 Then

? ? ? ? For i = 1 To Item.Attachments.Count

? ? ? ? ? ? Set olAtt = Item.Attachments(i)

? ? ? ? ? ? If olAtt.FileName Like condition Then

? ? ? ? ? ? ? ? olAtt.SaveAsFile path & dateFormat & "_" & olAtt.FileName

? ? ? ? ? ? End If

? ? ? ? Next

? ? End If

? ? Set olAtt = Nothing

? ? Sleep 1000

End Sub

如下圖:保存

解釋一下,因?yàn)槲颐總€附件名字都相同,用時間重命名,只能到秒這個級別,所以我每次處理都Sleep 1秒,否則有可能會覆蓋掉上一個文件。

第三步:

制作運(yùn)行規(guī)則,這一步比較簡單,只放一張圖片,仔細(xì)看每個設(shè)定


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容