mime-mail-0.4.1.2: Compose MIME email messages.

Safe Haskell | None

Network.Mail.Mime

Contents

- Datatypes
- Render a message
- Sending messages
- High-level `Mail` creation
- Utilities

Synopsis

- newtype Boundary = Boundary {
  - unBoundary :: Text
  }
- data Mail = Mail {
  - mailFrom :: Address
  - mailTo :: [Address]
  - mailCc :: [Address]
  - mailBcc :: [Address]
  - mailHeaders :: [(ByteString, Text)]
  - mailParts :: [Alternatives]
  }
- emptyMail :: Address -> Mail
- data Address = Address {
  - addressName :: Maybe Text
  - addressEmail :: Text
  }
- type Alternatives = [Part]
- data Part = Part {
  - partType :: Text
  - partEncoding :: Encoding
  - partFilename :: Maybe Text
  - partHeaders :: Headers
  - partContent :: ByteString
  }
- data Encoding
  - = None
  - | Base64
  - | QuotedPrintableText
  - | QuotedPrintableBinary
- renderMail :: RandomGen g => g -> Mail -> (ByteString, g)
- renderMail' :: Mail -> IO ByteString
- sendmail :: ByteString -> IO ()
- sendmailCustom :: FilePath -> [String] -> ByteString -> IO ()
- renderSendMail :: Mail -> IO ()
- renderSendMailCustom :: FilePath -> [String] -> Mail -> IO ()
- simpleMail :: Address -> Address -> Text -> Text -> Text -> [(Text, FilePath)] -> IO Mail
- randomString :: RandomGen d => Int -> d -> (String, d)
- quotedPrintable :: Bool -> ByteString -> Builder

# Datatypes

newtype Boundary Source

MIME boundary between parts of a message.

Constructors

Boundary |

Fields

unBoundary :: Text

Instances

Random Boundary |

data Mail Source

An entire mail message.

Constructors

Mail |

Fields

mailFrom :: Address
mailTo :: [Address]
mailCc :: [Address]
mailBcc :: [Address]
mailHeaders :: [(ByteString, Text)]

  Other headers, excluding from, to, cc and bcc.

mailParts :: [Alternatives]

  A list of different sets of alternatives. As a concrete example:

       mailParts = [ [textVersion, htmlVersion], [attachment1], [attachment1]]

  Make sure when specifying alternatives to place the most preferred version last.

emptyMail :: Address -> Mail Source

A mail message with the provided `from` address and no other fields filled in.

data Address Source

Constructors

Address |

Fields

addressName :: Maybe Text
addressEmail :: Text

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.

data Part Source

A single part of a multipart message.

Constructors

Part |

Fields

partType :: Text

  content type

partEncoding :: Encoding
partFilename :: Maybe Text

  The filename for this part, if it is to be sent with an attachemnt disposition.

partHeaders :: Headers
partContent :: ByteString

data Encoding Source

How to encode a single part. You should use `Base64` for binary data.

Constructors

None |
Base64 |
QuotedPrintableText |
QuotedPrintableBinary |

# Render a message

renderMail :: RandomGen g => g -> Mail -> (ByteString, g)Source

Render a `Mail` with a given `RandomGen` for producing boundaries.

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.

sendmailCustom Source

Arguments

:: 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.

renderSendMail :: Mail -> IO ()Source

Render an email message and send via the default sendmail executable with default options.

renderSendMailCustom Source

Arguments

:: FilePath | sendmail executable path
-> [String] | sendmail command-line options
-> Mail | mail to render and send
-> IO () |

Render an email message and send via the specified sendmail executable with specified options.

# High-level `Mail` creation

simpleMail Source

Arguments

:: 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.

# Utilities

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.