Hi Stephen,

Here you go. Here's some code adapted from one of our apps.

I actually had to hack net/smtp to get AUTH PLAIN to work against our mail 
server.
I omitted the changes here as I imagine it's not a common problem.

Cheers,

-- Dave

#lang scheme/base

(require (prefix-in net-head: net/head)
 net/smtp
 openssl) 


; #:from  string
; #:to  string
; #:subject string
; [#:cc (U string #f)]
; [#:smtp-server  string]
; [#:smtp-username string]
; [#:smtp-password string]
; string
; ->
; void
(define (send-email

 #:from from
 #:to to
 #:cc [cc #f]
 #:subject  subject
 #:smtp-server  [smtp-server  "smtp.example.com"]
 #:smtp-username [smtp-username "foo"]
 #:smtp-password [smtp-password "bar"]
 content)
(let ([recipients (cons to (if cc (list cc) null))]
[headers (net-head:standard-message-header
 from
 (list to)
 (if cc (list cc) null)
 null ; bcc
 subject)])
(smtp-send-message
 smtp-server
 (strip-friendly-names from)
 (list* (strip-friendly-names to)
(if cc
(list (strip-friendly-names cc))
null))
 headers
 (regexp-split #rx"\r?\n" content)
 #:auth-user  smtp-username
#:auth-passwd smtp-password
 #:tls-encode ports->ssl-ports)
(void)))

; Strips friendly names from an email address if present, for example:
;  Dave <[email protected]> -> [email protected]
;  [email protected] -> [email protected]
;
; string -> string
(define (strip-friendly-names email)
(match (regexp-match #px"^.*[<](.*)[>]$" email)
[(list _ ans) ans]
[#f email]))



_________________________________________________
  For list-related administrative tasks:
  http://lists.racket-lang.org/listinfo/users

Reply via email to