IMAP-Serverからcurl(curlを使用しているBashScript)を使って電子メールを読みたいと思います。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
}
今、私は移動するためのメールを待って、無限ループであるように思わEメールを移動した後。今、面白い部分:私は私のwebmailerを介して手作業でメールを見ると、ループが終了し、メールが1つずつ移動します(ループがあるので、すべてのメールは他のフォルダでソートする必要があります)。
どういうわけかIMAPは私がウェブメールを介してチェックするとメールを移動するだけですが、チェックしないとメールは移動しません。これは自動化されているはずですので、誰も私に説明することができます、なぜこれが起こっているのか、私はそれについて何ができるのですか?
あなたはexpungeを呼び出しましたか?メールは、削除が呼び出されるまで削除されません。 – Max
ありがとう!試してみます! –
'EXPUNGE'コマンドを送信しますか?他のコマンドを呼び出すような-Xでおそらく。ただし、EXPUNGEメッセージはすべてのIDをシフトさせるので(メッセージ3が削除されると、メッセージ4は3になります)、完了するまでそれを呼び出さないでください。これが自動的には発生しないのはこのためです。 – Max