還原Email附件出現亂碼(BASE64)的狀況

有時候我們在轉Email時,轉來轉去後會發現,原本信件中的附件不見了,反而信件的主體本文中,出現一連串連續性的亂碼,其實這個亂碼就是BASE64編碼,它就是原本應該出現的附件,只是經過種種原因,這個附件被解譯在Email信件的Body區段中,或者是被塞到Email的文末。

這個現象是有辦法把它還原回來的,只是前題你要知道這個附件是用什麼格式存放,例如它是一個ZIP檔案,還是一張JPG圖片檔?接下來就是解決的步驟了:

  1. 把你Email中的亂碼,完全複製起來並貼到記事本中,並取名為「code.txt」。通常BASE64編碼的最末端,會有出現「=」符號的情況,記住,連這個符號都要複製到喔。

  2. OpenSSL官方網站下載OpenSSL for Windows版本,或到直接到我提供的網址下載,然後一直按下一步把它安裝起來。

  3. 將「code.txt」剪下貼上到C磁碟下的目錄「C:\OpenSSL-Win32\bin」內。

  4. 開始>執行>cmd,按Enter,會出現黑色的Console畫面。接下來切到console模式來表達指令:

C:\Users\Administrator>cd C:\OpenSSL-Win32\bin
C:\OpenSSL-Win32\bin>openssl base64 -d -in code.txt -out 你想命名的檔案名稱.附檔名
  1. 如果你複製的「code.txt」是正確且完整的BASE64編碼的話,那麼你的「C:\OpenSSL-Win32\bin」內將會出現「你想命名的檔案名稱.附檔名」這個檔案,例如它剛好是JPG圖片檔案的話,那麼你對著它點兩下就可以利用Windows內建的軟體開啟這個圖片檔案了。

這裡有UTF-8線上的版本可以讓你直接使用:Base64 for UTF-8 version

如果是EMAIL的主旨或寄件人出現亂碼怎麼辦?

基本上這區要出現亂碼的話,他是屬於MIME(Multipurpose Internet Mail Extensions)規範下的產物,所以要解碼的話可能要參考一下RFC2047的規範,通常是起始「=?」、終點是 「?=」,裡面包含編碼類型與解碼方式(用於non-ASCII文字),例如這一串文字「=?utf-8?B?5oiR55qE5a+E5Lu25Lq66aGv56S65piv5LqC56K85ZWm?=」就是「我的寄件人顯示是亂碼啦」文字。

如果細心一點的人可以發現「5oiR55qE5a+E5Lu25Lq66aGv56S65piv5LqC56K85ZWm」這串文字,其實就是「我的寄件人顯示是亂碼啦」的BASE64編碼。

這裡有Email Header Decoder讓你驗證一下:Online MIME Headers Decoder

Email BASE64 Decode OpenSSL