mail 信件消失問題

系上的期刊用了ojs 系統頗久了。但從某個時刻開始(一年前左右),信件收發就開始非常不穩定,投稿者跟編輯都反應收不到信,不知道要審稿,不知道過了沒。 各種問題….。

但因為這程式根本沒改過…….. 到底要怎麼查。 好吧 那先問計中,因為是用系上的mail server 。 但計中都說有寄出,也有截圖系統給我看。 但實際上就是沒收到,但也沒退信….。webmail 裡面 透過smtp 寄出的不會有寄件備份。也沒任何退信…. 完全沒頭緒。

後來只好交叉測試,我另外寫了用 phpmailer 套件的程式來寄信。 疑居然可以。 webmail 寄出也可以。 這下就更謎了……. 。

後來實在是走投無路了,透過webhook.site 收取 raw mail 來比對。 後來才發現 原來是少了一個 message-id 欄位造成的 …. orz

底下就是網路上找到的產生message-id 的方法….

 $messageid =sprintf( "<%s.%s@%s>", base_convert(microtime(), 10, 36), base_convert(bin2hex(openssl_random_pseudo_bytes(8)), 16, 36), $_SERVER['SERVER_NAME']); 

把這個餵給他即可。 目前測試gmail 會過了,mail 2000 應該也會過了。 但還有其他的就不確定了….. 。

發表留言