2008/10/03

[Commo Lisp] POP3 でのメール削除

全く使ってなかたプロバイダのメールをひさしぶりにチェックしてみたら4000通以上のメールがたまっていた。メーラーは Opera を使っているのだが、メールのフェッチ途中で落ちてしまう。どうせ SPAM メールばかりだから全部容赦なく消してしまうことにした。

さっぱりした。複数行のレスポンスは考慮してないし、認証もプレーンテキストなので。。。

(defparameter *host* "xxx")
(defparameter *user* "xxx")
(defparameter *pass* "xxx")

(require :usocket)

(defun snd (stream &rest message)
(let ((message (format nil "~{~a~^ ~}~c~c" message #\cr #\lf)))
(print (remove #\cr message))
(write-string message stream)
(force-output stream)))

(defun rev (stream)
(print (remove #\cr (read-line stream nil))))

(usocket:with-client-socket (socket stream *host* 110)
(rev stream)
(snd stream :USER *user*)
(rev stream)
(snd stream :PASS *pass*)
(rev stream)
(snd stream :STAT)
(destructuring-bind (state count size)
(read-from-string (concatenate 'string "(" (rev stream) ")"))
(loop for i from 1 to count
do (snd stream :DELE i)
do (rev stream)))
(snd stream :QUIT)
(rev stream))

0 件のコメント: