<div><div><span><div><div><div>
            <div>
                <span>Hi Stephen,<div><br></div><div>Here you go. Here's some code adapted from one of our apps.</div><div><br></div><div>I actually had to hack net/smtp to get AUTH PLAIN to work against our mail server.</div><div>I omitted the changes here as I imagine it's not a common problem.</div><div><br></div><div><span><div>Cheers,</div><div><br></div></span><span>-- Dave<br></span></div><div><font class="Apple-style-span" face="Menlo"><font class="Apple-style-span" face="Helvetica"><br></font></font></div><div><font class="Apple-style-span" face="Menlo">#lang scheme/base</font></div><div><font class="Apple-style-span" face="Menlo"><br></font></div><div><font class="Apple-style-span" face="Menlo"><div>(require (prefix-in net-head: net/head)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; net/smtp</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; openssl)&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</div></font></div><div><font class="Apple-style-span" face="Menlo"><br></font></div><div><font class="Apple-style-span" face="Menlo">; &nbsp;#:from &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</font></div><div><font class="Apple-style-span" face="Menlo">; &nbsp;</font><span class="Apple-style-span" style="font-family: Menlo; ">#:to &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; string</span></div><div><span class="Apple-style-span" style="font-family: Menlo; ">; &nbsp;#:subject &nbsp; &nbsp; &nbsp; &nbsp;string</span></div><div><span class="Apple-style-span" style="font-family: Menlo; "><span class="Apple-style-span" style="font-family: Helvetica; "><div><span class="Apple-style-span" style="font-family: Menlo; ">; &nbsp;[#:cc &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(U string #f)]</span></div></span>; &nbsp;[#:smtp-server &nbsp; string]</span></div><div><span class="Apple-style-span" style="font-family: Menlo; "><span class="Apple-style-span" style="font-family: Helvetica; "><div><span class="Apple-style-span" style="font-family: Menlo; ">; &nbsp;[#:smtp-username string]</span></div></span><span class="Apple-style-span" style="font-family: Helvetica; "><div><span class="Apple-style-span" style="font-family: Menlo; ">; &nbsp;[#:smtp-password string]</span></div></span>; &nbsp;string</span></div><div><span class="Apple-style-span" style="font-family: Menlo; ">; -&gt;</span></div><div><span class="Apple-style-span" style="font-family: Menlo; ">; &nbsp;void</span></div><div><div><font class="Apple-style-span" face="Menlo"><div><div>(define (send-email</div></div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:from &nbsp; &nbsp; &nbsp;from</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:to &nbsp; &nbsp; &nbsp; &nbsp;to</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:cc &nbsp; &nbsp; &nbsp; &nbsp;[cc &nbsp; &nbsp;#f]</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:subject &nbsp; subject</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:smtp-server &nbsp; [smtp-server &nbsp; "smtp.example.com"]</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:smtp-username [smtp-username "foo"]</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; #:smtp-password [smtp-password "bar"]</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; content)</div><div>&nbsp;&nbsp;(let ([recipients (cons to (if cc (list cc) null))]</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;[headers &nbsp; &nbsp;(net-head:standard-message-header</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; from</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (list to)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (if cc (list cc) null)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; null ; bcc</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; subject)])</div><div>&nbsp;&nbsp; &nbsp;(smtp-send-message</div><div>&nbsp;&nbsp; &nbsp; smtp-server</div><div>&nbsp;&nbsp; &nbsp; (strip-friendly-names from)</div><div>&nbsp;&nbsp; &nbsp; (list* (strip-friendly-names to)</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(if cc</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(list (strip-friendly-names cc))</div><div>&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;null))</div><div>&nbsp;&nbsp; &nbsp; headers</div><div>&nbsp;&nbsp; &nbsp; (regexp-split #rx"\r?\n" content)</div><div>&nbsp;&nbsp; &nbsp; #:auth-user &nbsp; smtp-username</div><div>&nbsp;&nbsp; &nbsp;&nbsp;#:auth-passwd smtp-password</div><div>&nbsp;&nbsp; &nbsp; #:tls-encode &nbsp;ports-&gt;ssl-ports)</div><div>&nbsp;&nbsp; &nbsp;(void)))</div><div><br></div><div>; Strips friendly names from an email address if present, for example:</div><div>; &nbsp; Dave &lt;dave@example.com&gt; -&gt; dave@example.com</div><div>; &nbsp; dave@example.com&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;-&gt; dave@example.com</div><div>;</div><div>; string -&gt; string</div><div>(define (strip-friendly-names email)</div><div>&nbsp;&nbsp;(match (regexp-match #px"^.*[&lt;](.*)[&gt;]$" email)</div><div>&nbsp;&nbsp; &nbsp;[(list _ ans) ans]</div><div>&nbsp;&nbsp; &nbsp;[#f email]))</div></font></div></div><div><font class="Apple-style-span" color="#A0A0A0"><font class="Apple-style-span" color="#000000"><br></font></font></div></span>
            </div>
        </div></div></div></span></div></div>