[racket] (smtp-send-message ...) with #:tls-encode
> Does anyone have an example of using #:tls-encode (net/smtp)?
No, in fact I'm seeing it fail today with an SMTP server that requires
TLS on port 587.
The reason seems to be that the server is expecting AUTH LOGIN whereas
net/smtp only does AUTH PLAIN.
I was able to get it to work (with this particular server) by making a
local copy of smtp-send-message from net/smtp-unit.rkt and modifying
lines 96-103:
(when auth-user
(log "auth\n")
(fprintf w "AUTH PLAIN ~a"
;; Encoding adds CRLF
(base64-encode
(string->bytes/latin-1
(format "~a\0~a\0~a" auth-user auth-user auth-passwd))))
(check-reply r 235 w))
to be this instead:
(when auth-user
(if tls-encode
(begin
(log "auth login\n")
(fprintf w "AUTH LOGIN\r\n")
(check-reply r 334 w)
(fprintf w "~a" ;encoding adds CRLF
(base64-encode
(string->bytes/latin-1 auth-user)))
(check-reply r 334 w)
(fprintf w "~a" ;encoding adds CRLF
(base64-encode
(string->bytes/latin-1 auth-passwd)))
(check-reply r 235 w))
(begin
(log "auth plain\n")
(fprintf w "AUTH PLAIN ~a" ;encoding adds CRLF
(base64-encode
(string->bytes/latin-1
(format "~a\0~a\0~a" auth-user auth-user auth-passwd))))
(check-reply r 235 w))))
i.e. I tried to keep the AUTH PLAIN case while providing AUTH LOGIN on
the assumption it will always be wanted when doing TLS. I don't deeply
know the SMTP protocol. This is based on me observing one specific
server and guessing what would work. That said, I hope this may help.
On Fri, Feb 4, 2011 at 7:51 AM, Stephen De Gabrielle
<spdegabrielle at gmail.com> wrote:
> Hi,
>
> Does anyone have an example of using #:tls-encode (net/smtp)?
>
> Cheers,
>
> Stephen
>
> --
> Stephen De Gabrielle
> stephen.degabrielle at acm.org
> Telephone +44 (0)20 85670911
> Mobile +44 (0)79 85189045
> http://www.degabrielle.name/stephen
>
> _________________________________________________
> For list-related administrative tasks:
> http://lists.racket-lang.org/listinfo/users