#lang racket/base (require net/smtp net/head simple-ini) (provide mail-report check-mail-config) (define (get ini key msg) (let ((v (ini-get ini 'mail key 'nil))) (when (eq? v 'nil) (error msg)) v)) (define (get-config ini) (let* ((from (get ini 'from "configure from address as name ")) (to (get ini 'to "configure to address as name ")) (server (get ini 'server "configure the smtp server")) (port (ini-get ini 'mail 'port 25)) (user (ini-get ini 'mail 'user #f)) (passwd (ini-get ini 'mail 'passwd #f)) ) (values from to server port user passwd))) (define (mail-report ini subject report) (let-values (((from to server port user passwd) (get-config ini))) (let* ((hdr (standard-message-header from (list to) '() '() subject))) (smtp-send-message server from (list to) hdr (if (list? report) report (list report)) #:port-no port #:auth-user user #:auth-passwd passwd ) ) ) ) (define (check-mail-config ini) (let-values (((from to server port user passwd) (get-config ini))) #t))