最近在測驗環境使用C語言SMTP發送郵件沒有什么問題,到了生產環境郵件結尾內容缺失,查找了好幾天沒有找到問題所在,本人JAVA程式員,這是個老專案,進行維護,請C,linux,TCP相關技術大神幫忙排除下問題?
故事:
客戶端全域環境都是GBK,使用C讀取HTML檔案(GBK),連接郵件服務器(GBK),SOCKET通過每次快取1024 將HTML檔案內容投遞給郵件服務器
已排查:(生成不允許抓包,請諒解)
1.客戶端fread檔案每次1024位元組,但是write回傳值比1024小(網上說write通過網路回傳值就是會比發送值小)
2.fread內容write發送成功后將內容寫入臨時檔案,臨時檔案顯示內容是完整的,發送到郵件服務器,郵件服務器將DATA資料存放在臨時接收檔案內,接收內容的檔案內容已經缺失
3.每次收到的郵件大約都在22460位元組左右(....80條<tr></tr>...),超過80條,以后內容看不到
這幾天排查可能問題:
1.fread 檔案 1024 ,但是write發送實際比1024小【write問題】
2.socket發送資訊,通信程序丟包【網路問題】
3.快取發送超過Linux發送快取最大值,造成快取溢位,內容缺失【Linux配置問題】
4.生產發送郵件系統經過路由,TCP 拆包 拼包 錯誤導致內容缺失【網卡問題】
下面是C發送HTML內容代碼,其他部分因為機密不給大家看(就是SMTP規定內容,HELO /AUTH LOGIN ....)


正常郵件,涉密請諒解【QQQ】

超過80條,缺失郵件
uj5u.com熱心網友回復:

以前我還cmd控制臺telnet 發過郵件。按照smtp協議手工輸入代碼。
uj5u.com熱心網友回復:
如果服務端設定了sotimeout那就要看你手速了,哈哈哈轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/29374.html
標籤:C語言
