公司里一個小項目,需要用php定期統計當前未解的bug,并通過郵件的方式發送出來
bug統計使用的是php + postgres 郵件是使用sendmail
采用的方式是:
1. 首先使用php run sql查詢,生成utf-8格式的html文件
2. call命令行發送email
/usr/sbin/sendmail xxx@xxx.com < /var/www/gforge/www/xxx.html
其中/usr/sbin/sendmail是sendmail的路徑
< 之后的是生成的html
3. 使用crontab將相應的腳本文件做定期執行
==========================================
1,3執行起來都沒有問題
在進行2的時候,發現發出來的郵件都被隨機的莫名其妙的加上了一些英文感嘆號!
導致看上去非常怪。
Debug過程:
1. 開始以為是腳本生成時產生的問題,但是發現生成的html本身并沒有這些符號。
2. 于是將郵件導出為eml格式,然后用notepad++打開。打開后發現,每個!都出現在行尾,于是..猜測可能這個問題的原因應該是sendmail對中文字符做強制換行時出現的問題
3. 打開生成的html看,發現程序員那邊確實再每個div之間沒有用rn做物理換行
4. 用查找替換將</div>換成</div>rn(notepad++支持在替換時加換行符)
再次執行發送,這次郵件就沒有亂字符了。
=========================================
總結:
如果要用sendmail來發送html文件,最好人為做一些換行