開始使用電子發票上傳發票大平台後,每日大平台都每日寄送歷史存證檢核表
主要目的係供比對前一日上傳資料筆數,若發現上傳資料筆數不符時再與電子發票技術客服人員聯繫。
問題是,誰有那功夫每天去打開來檢查……一般都是直接乎略,到真正發生問題被通知才會發現。
因此寫了一個小程式,每天自動收信檢附檔中的excel檔,檢查 傳輸差異數、存證差異數、存證異常清單。如果有異常就轉發出來。
程式碼分享出來,如果有需要的可以參考使用 TurnkeyMailChecker
主要使用套件:
MailKit:用來收信、發信
SharpZipLib:用來解壓信件zip附檔
NPOI:用來讀取excel檔資料
大致說明一下做法思路:
(1)建立一個專門收電子發票平台的帳號
(2)使用IMAPClient收信
這裡要注意 IMAP使用的 port,
無加密使用 143
SMTPClient.Connect("exaple.com", 143, SecureSocketOptions.None );
有加密使用 993
SMTPClient.Connect("exaple.com", 993, SecureSocketOptions.SslOnConnect);
收信時檢查只有寄信者為 peinvmgr@einvoice.nat.gov.tw,並符合關鍵主旨XXX有限公司{年-月-日} 歷史存證檢核表,才進行處理,其他信件直接刪除,每次收完就刪除處理過的信件,避免信箱爆掉。
(3)檢查第1個Sheet以下欄位值:傳輸差異數 存證差異數
及第3個Sheet 存證異常清單計算筆數,如果其中一個數值大於0,表示有異常,隨即發送通知
程式不難,主要就是使用各方的套件,像組積木一樣完成自已想要的功能,感謝這些強大套件的開發者們的努力,讓事件簡單化!
主程式如下: