43 lines
1.2 KiB
Racket
43 lines
1.2 KiB
Racket
#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 <email>"))
|
|
(to (get ini 'to "configure to address as name <email>"))
|
|
(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 auth) (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-pwd passwd
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define (check-mail-config ini)
|
|
(let-values (((from to server port user passwd) (get-config ini)))
|
|
#t)) |