Gaucheでメール送信

ネットをしている途中に寝てしまわないようにするための対策は何かと考え、
「10分ごとに自分の携帯にメールを送ればいい」と思い、適当にGaucheで書いてしまいました。
ソケット通信を使ってSMTPプロトコルを使います。
エラーが起きても無視の適当なコードです。
適当なのでコメントも書いていません。

(use gauche.net)

(define (smtp-send to from host port text)
  (call-with-client-socket
      (make-client-socket 'inet host port)
  (lambda (in out)
    (format out (string-append "EHLO " (cadr (string-split from "@")) "\r\n"))
    (format out (string-append "MAIL FROM: " from "\r\n"))
    (format out (string-append "RCPT TO: " to "\r\n"))
    (format out "DATA\r\n")
    (format out (string-append text "\r\n"))
    (format out ".\r\n")
    (format out "quit\r\n")
    (flush out)
    (copy-port in (current-output-port)))))

(define (main args)
  (begin
    (define loop
	   (lambda ()
	     (begin
	       (smtp-send "宛先@example.com" "送信元@example.com"
			  "example.com" 25
			  "subject: 寝落ち防止自動送信メール\r\n寝落ち防止メール")
	       (sys-sleep 600)
	       (loop))))
    (loop)
    0))

さまざまな用途に応用できそうですね。悪用したら自動スパム送信プログラムになりそうですが。
こんなことをするなら普通に一定時間ごとに音を鳴らすプログラムで十分ですが、
一応Gaucheの勉強にはなりました。