HTML Email 初嚐心得

Posted by     "" on Monday, November 12, 2018

HTML Email 是指在 Email 中使用 HTML 去排版顯示。

最近要替學生會寄信,覺得如果內容就幾行字實在是太無趣,打算弄的跟現在公司寄信一樣美美的。Gmail 編輯時尚不支援 HTML,我打算大量寄信,因此也沒有打算使用 Gmail 去寄信,而是使用 Python SMTP lib 去完成。

我使用的是 BEE Free 這款線上免費使用的編輯軟體,畢竟 HTML Email 不支援很多 HTML 語法,時間緊迫就不打算自己刻了。這套軟體除了免登入,且只需要拉一拉就可以完成,對於不會寫程式的人也十分方便。

在編輯完成之後,可以打包下載,裡面會有一個 .html 檔和一個資料夾,裡面放有各種圖片素材,通常是使用內建的圖片才會有,因此我把這些圖片上傳到 Imgur,再連結到原本的 HTML 檔當中。

測試寄送 HTML 信件時,發現雖然我寄出了,但是沒收到信,但若使用較短的 HTML 信件則可以成功,找了很久發現是不支援 <body> 這個 tag,因此 HTML 內容就砍到剩 <table> 而已。不過還是失敗,顯示 \xe6 不是 unicode 什麼的,這時我確認了很多遍,確定內容都是 unicode 編碼,狀況依舊。在不斷的使用二分法確認出問題的段落後,我發現有個段落有時成功有時失敗,原因竟然是出在那行太長,於是把整份 HTML 貼到 online HTML beautify 網站重新排版過後,果然就成功了。

測試雖然成功,但是在大量寄信時卻有漏信,查了 log 似乎是每次只能寄送 1000 封信,超過就會 drop,於是在寄信清單尾端的人都會沒收到信,mail.log 裡面也不會有紀錄。知道這個問題後就去交叉比對收信人跟 log 有哪些 diff,即可找出沒收到的名單再次寄信。我使用

$ sudo grep -irn "mail1.ncnu.edu.tw" /var/log/mail* | awk '{print $7}' | cut -c 5-32 | awk 'length($0)>27{print $0}'

去抓出哪些人有寄過,再寫 Python 腳本比對。朋友告訴我可以使用

$ sudo pflogsumm -d today /var/log/mail.log 

去分析更快,真的是個好工具!

但目前還是沒有找到為何有 1000 封的限制,找到後會再補上來


comments powered by Disqus