Safe Haskell | None |
---|---|
Language | Haskell98 |
- newtype Boundary = Boundary {
- unBoundary :: Text
- data Mail = Mail {}
- emptyMail :: Address -> Mail
- data Address = Address {
- addressName :: Maybe Text
- addressEmail :: Text
- type Alternatives = [Part]
- data Part = Part {}
- data Encoding
- type Headers = [(ByteString, Text)]
- renderMail :: RandomGen g => g -> Mail -> (ByteString, g)
- renderMail' :: Mail -> IO ByteString
- sendmail :: ByteString -> IO ()
- sendmailCustom :: FilePath -> [String] -> ByteString -> IO ()
- sendmailCustomCaptureOutput :: FilePath -> [String] -> ByteString -> IO (ByteString, ByteString)
- renderSendMail :: Mail -> IO ()
- renderSendMailCustom :: FilePath -> [String] -> Mail -> IO ()
- simpleMail :: Address -> Address -> Text -> Text -> Text -> [(Text, FilePath)] -> IO Mail
- simpleMail' :: Address -> Address -> Text -> Text -> Mail
- simpleMailInMemory :: Address -> Address -> Text -> Text -> Text -> [(Text, Text, ByteString)] -> Mail
- addPart :: Alternatives -> Mail -> Mail
- addAttachment :: Text -> FilePath -> Mail -> IO Mail
- addAttachments :: [(Text, FilePath)] -> Mail -> IO Mail
- addAttachmentBS :: Text -> Text -> ByteString -> Mail -> Mail
- addAttachmentsBS :: [(Text, Text, ByteString)] -> Mail -> Mail
- renderAddress :: Address -> Text
- htmlPart :: Text -> Part
- plainPart :: Text -> Part
- randomString :: RandomGen d => Int -> d -> (String, d)
- quotedPrintable :: Bool -> ByteString -> Builder
Datatypes
MIME boundary between parts of a message.
An entire mail message.
|
emptyMail :: Address -> Mail Source
A mail message with the provided from
address and no other
fields filled in.
Address | |
|
type Alternatives = [Part] Source
Multiple alternative representations of the same data. For example, you could provide a plain-text and HTML version of a message.
A single part of a multipart message.
Part | |
|
How to encode a single part. You should use Base64
for binary data.
type Headers = [(ByteString, Text)] Source
Render a message
renderMail :: RandomGen g => g -> Mail -> (ByteString, g) Source
renderMail' :: Mail -> IO ByteString Source
Like renderMail
, but generates a random boundary.
Sending messages
sendmail :: ByteString -> IO () Source
Send a fully-formed email message via the default sendmail executable with default options.
:: FilePath | sendmail executable path |
-> [String] | sendmail command-line options |
-> ByteString | mail message as lazy bytestring |
-> IO () |
Send a fully-formed email message via the specified sendmail executable with specified options.
sendmailCustomCaptureOutput :: FilePath -> [String] -> ByteString -> IO (ByteString, ByteString) Source
Like sendmailCustom
, but also returns sendmail's output to stderr and
stdout as strict ByteStrings.
Since 0.4.9
renderSendMail :: Mail -> IO () Source
Render an email message and send via the default sendmail executable with default options.
:: FilePath | sendmail executable path |
-> [String] | sendmail command-line options |
mail to render and send | |
-> IO () |
Render an email message and send via the specified sendmail executable with specified options.
High-level Mail
creation
:: Address | to |
-> Address | from |
-> Text | subject |
-> Text | plain body |
-> Text | HTML body |
-> [(Text, FilePath)] | content type and path of attachments |
-> IO Mail |
A simple interface for generating an email with HTML and plain-text alternatives and some file attachments.
Note that we use lazy IO for reading in the attachment contents.
A simple interface for generating an email with only plain-text body.
:: Address | to |
-> Address | from |
-> Text | subject |
-> Text | plain body |
-> Text | HTML body |
-> [(Text, Text, ByteString)] | content type, file name and contents of attachments |
A simple interface for generating an email with HTML and plain-text
alternatives and some ByteString
attachments.
Since 0.4.7
Utilities
addPart :: Alternatives -> Mail -> Mail Source
Add an Alternative
to the Mail
s parts.
To e.g. add a plain text body use > addPart [plainPart body] (emptyMail from)
addAttachment :: Text -> FilePath -> Mail -> IO Mail Source
Add an attachment from a file and construct a Part
.
:: Text | content type |
-> Text | file name |
-> ByteString | content |
Add an attachment from a ByteString
and construct a Part
.
Since 0.4.7
addAttachmentsBS :: [(Text, Text, ByteString)] -> Mail -> Mail Source
Since 0.4.7
renderAddress :: Address -> Text Source
Format an E-Mail address according to the name-addr form (see: RFC5322 § 3.4 "Address specification", i.e: [display-name] '<'addr-spec'>') This can be handy for adding custom headers that require such format.
Since: 0.4.11
randomString :: RandomGen d => Int -> d -> (String, d) Source
Generates a random sequence of alphanumerics of the given length.
quotedPrintable :: Bool -> ByteString -> Builder Source
The first parameter denotes whether the input should be treated as text. If treated as text, then CRs will be stripped and LFs output as CRLFs. If binary, then CRs and LFs will be escaped.