6 SMTP: Sending E-Mail
The net/head library defines the format of a header string, which is used by smtp-send-message. The net/head module also provides utilities to verify the formatting of a mail address. The procedures of the net/smtp module assume that the given string arguments are well-formed.
6.1 SMTP Functions
procedure
(smtp-send-message server-address from to header message [ #:port-no port-no/k #:auth-user user #:auth-passwd pw #:xoauth2? xoauth2? #:tcp-connect connect #:tls-encode encode port-no]) → void? server-address : string? from : string? to : (listof string?) header : string? message : (listof (or/c string? bytes?)) port-no/k : (integer-in 0 65535) = 25 user : (or/c string? #f) = #f pw : (or/c string? #f) = #f xoauth2? : any/c = #f
connect :
(string? (integer-in 0 65535) . -> . (values input-port? output-port?)) = tcp-connect
encode :
(or/c #f (input-port? output-port? #:mode 'connect #:encrypt 'tls #:close-original? #t . -> . (values input-port? output-port?))) = #f port-no : (integer-in 0 65535) = port-no/k
The header argument is the complete message header, which should already include “From:”, “To:”, and “CC:” fields consistent with the given sender and recipients. See also the net/head library for header-creating utilities.
The message argument is the body of the message, where each string or byte string in the list corresponds to a single line of message text. No string in message should contain a carriage return or linefeed character.
The optional port-no argument—
The optional user and pw arguments supply a username and password for authenticated SMTP using the AUTH PLAIN protocol. If xoauth2? is true, then authentication uses the AUTH XOAUTH2 protocol, instead, and pw is used as an access token (which must obtained somehow before calling smtp-send-message).
The optional connect argument supplies a connection procedure to be used in place of tcp-connect. For example, use ssl-connect to connect to the server via SSL.
If the optional encode argument supplies a procedure instead of #f, then the ESMTP STARTTLS protocol is used to initiate SSL communication with the server. The procedure given as the encode argument should be like ports->ssl-ports; it will be called as
(encode r w #:mode 'connect #:encrypt 'tls #:close-original? #t)
and it should return two values: an input port and an output port. All further SMTP communication uses the returned ports.
For encrypted communication, normally either ssl-connect
should be supplied for connect, or
ports->ssl-ports should be supplied for
encode—
Changed in version 1.2 of package net-lib: Added the xoauth2? argument.
parameter
(smtp-sending-end-of-message) → (-> any)
(smtp-sending-end-of-message proc) → void? proc : (-> any)
6.2 SMTP Unit
smtp@ and smtp^ are deprecated. They exist for backward-compatibility and will likely be removed in the future. New code should use the net/smtp module.
(require net/smtp-unit) | package: compatibility-lib |
6.3 SMTP Signature
(require net/smtp-sig) | package: compatibility-lib |
signature
smtp^ : signature
Includes everything exported by the net/smtp module.