我想通過curl(BashScript,使用curl)從IMAP服務器讀取電子郵件。IMAP不更新它的文件夾狀態
我的問題是:移動電子郵件後,IMAP服務器不更新,這樣,如果我檢查收件箱,IMAP服務器會顯示舊數量的消息,包含在INBOX中。
要清除我的問題,下面是一些例子,代碼:
function delete_mail_id() {
curl --insecure \
--url "${SERVER}/INBOX" \
--user "${USER}:${PASSWD}" \
-X "STORE ${1} +Flags \Deleted" 1>/dev/null 2>/dev/null
}
function copy_mail_id_to() {
curl --insecure \
--url "${SERVER}/INBOX;UID=${1}" \
--user "${USER}:${PASSWD}" \
-X "COPY ${1} INBOX/${2}" 1>/dev/null 2>/dev/null
}
function move_mail_id_to() {
copy_mail_id_to "${1}" "${2}"
delete_mail_id "${1}"
}
function wait_for_mail_move(){
TEMP=$(tempfile)
while true; do
fetch_first_mail > $TEMP
if [ "$(grep 'Message-ID:' $TEMP)" != "${1}" ]; then
break
else
sleep 1
fi
done
rm $TEMP
}
現在移動的電子郵件我等移動郵件,但它似乎是一個無限循環後。現在有趣的部分:如果我通過webmailer手動查看郵件,循環結束,郵件逐一移動(我有一個循環,因此所有郵件都應該在其他文件夾中排序)。
不知怎的,IMAP只會移動郵件,如果我通過webmailer檢查它,但不這樣做,如果我不檢查它。這應該是自動化的,所以,任何人都可以向我解釋,爲什麼會發生這種情況,我能做些什麼呢?
你打電話過了嗎?在調用清除之前,郵件不會被刪除。 – Max
謝謝!我會嘗試! –
發送'EXPUNGE'命令?推測像-X就像你調用其他命令一樣。但是,在你完成之前不要調用它,因爲EXPUNGEing消息會導致所有的ID移動(當消息3被刪除時,消息4變爲3)。這就是它不會自動發生的原因。 – Max