Next: , Previous: , Up: posix   [Index]

4.35 Sending email with mailx

The library (vicare posix mailx) exports a simple API to send email through the external program mailx. This library is a demonstration of the basic mechanism needed to execute an external program, write data to its standard input and read data from its standard output and standard error.

The source distribution of Vicare includes a simple demo program demo-mailx.sps in the tests subdirectory of the source tree.

The executable file mailx must be reachable in the current PATH; mailx is executed with the command line:

MAILRC=/dev/null mailx -t -i -v

the ASCII text displayed on the standard output and standard error is captured for diagnostic.

Function: mailx message

Send an email message spawning a subprocess that launches mailx. message must be a bytevector representing the message in ASCII encoding. When successful: return two strings representing the output of mailx to, respectively, standard output and standard error; otherwise raise an exception.

The source and destination addresses are extracted from the message itself.


(import (vicare)
  (vicare posix mailx))

(define (send-it message)
  (define rv
    (mailx (string->ascii message)))
  (display rv)
  (flush-output-port (current-output-port)))

(send-it "From: <marco@localhost>
To: <marco@localhost>
Subject: demo 01
MIME-Version: 1.0
Content-Type: text/plain

This is demo 01.
Marco Maggi